'Cette fonction renvoie la position haut gauche de n'importe quelle controle de n'importe quelle fenêtre active par
'rapport à la position de la fenêtre et non par rapport au bord Haut gauche de l'écran
'à condition de connaitre le Handle de la fenêtre et du contrôle
Source / Exemple :
Public Function PositionControle(ByVal HwndFenetre As Integer, ByVal HwndControle As Integer) As Integer
Dim rc As RECT
Dim PosFenX, PosFenY As Integer
Dim PosContX, PosContY As Integer
' On Recherche la position de la fenêtre par rapport à l'écran grace a son handle
result = GetWindowRect(HwndFenetre, rc)
PosFenX = rc.Left
PosFenY = rc.Top
' On Recherche la position du controle par rapport à l'écran grace a son handle
result = GetWindowRect(HwndControle, rc)
PosContX = rc.Left
PosContY = rc.Top
'On calcule la position du contrôle par rapport à la position de la fenétre
'
' Methode : PosContX - PosFenX = Position du controle en X
' PosContY - PosFenY = Position du controle en Y
If coord = 1 Then
PosContX = (PosContX - PosFenX) - 4
PositionControle = PosContX
Else
PosContY = (PosContY - PosFenY) - 23
PositionControle = PosContY
End If
End Function
Conclusion :
'Faut d'abord déclarer les APIs et un type rect qui va contenir les positions
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.