Bonjour à tous,
Je suis en train de créer une interface servant de menu pour gérer des dossier et je souhaitais faire en sorte que l'application s'adapte aux différentes résolutions des utilisateurs lorsque ceux-ci utilisent plusieurs écran pouvant avoir des résolutions différentes.
Pour cela, j'ai trouvé une fonction qui me permet d'ajuster la taille de l'interface à l'écran de l'utilisateur en changeant la résolution grâce au code suivant :
Option Explicit
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
(ByVal hWnd As Long, rectangle As RECT) As Long
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
Puis je passe pour un bouton dynamique qui me permet d'appliquer cette fonction et d'ajuster la résolution :
Private Sub CommandButton1_Click()
Dim Hauteur As Variant, Zoom As Double, Resolution As String
Const Zoom_100 As Integer = 1368
Resolution = GetScreenResolution
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1)
Zoom = (100 / Zoom_100) * CDbl(Hauteur)
MsgBox "Résolution actuelle : " & Resolution & " zoom passé à : " & Format(Zoom, "0") & " % (100% = " & Zoom_100 & ")"
ActiveWindow.Zoom = Format(Zoom, "0")
End Sub
Mon problème est que si l'utilisateur travail sur plusieurs écrans simultanément, l'interface ne modifie pas le zoom et ne prend en compte que la résolution de l'écran défini comme écran principal.
Je me demande donc s'il est possible d'ajuster l'interface, soit à l'aide du bouton ou automatiquement, en fonction des différentes résolutions de l'utilisateur (autre que l'écran principal) ?
D'avance merci pour votre aide !
Je suis en train de créer une interface servant de menu pour gérer des dossier et je souhaitais faire en sorte que l'application s'adapte aux différentes résolutions des utilisateurs lorsque ceux-ci utilisent plusieurs écran pouvant avoir des résolutions différentes.
Pour cela, j'ai trouvé une fonction qui me permet d'ajuster la taille de l'interface à l'écran de l'utilisateur en changeant la résolution grâce au code suivant :
Option Explicit
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
(ByVal hWnd As Long, rectangle As RECT) As Long
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
Puis je passe pour un bouton dynamique qui me permet d'appliquer cette fonction et d'ajuster la résolution :
Private Sub CommandButton1_Click()
Dim Hauteur As Variant, Zoom As Double, Resolution As String
Const Zoom_100 As Integer = 1368
Resolution = GetScreenResolution
Hauteur = Mid(Resolution, 1, InStrRev(Resolution, "x") - 1)
Zoom = (100 / Zoom_100) * CDbl(Hauteur)
MsgBox "Résolution actuelle : " & Resolution & " zoom passé à : " & Format(Zoom, "0") & " % (100% = " & Zoom_100 & ")"
ActiveWindow.Zoom = Format(Zoom, "0")
End Sub
Mon problème est que si l'utilisateur travail sur plusieurs écrans simultanément, l'interface ne modifie pas le zoom et ne prend en compte que la résolution de l'écran défini comme écran principal.
Je me demande donc s'il est possible d'ajuster l'interface, soit à l'aide du bouton ou automatiquement, en fonction des différentes résolutions de l'utilisateur (autre que l'écran principal) ?
D'avance merci pour votre aide !