Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 298 fois - Téléchargée 66 fois
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type POINTAPI x As Long y As Long End Type Private Declare Function GetWindowRect Lib "user32" (ByVal Hwnd As Long, lpRect As RECT) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Dim VarPointAPI As POINTAPI Dim VarObjRect As RECT Private Function IsOnObject(Hwnd As Long) As Boolean GetCursorPos VarPointAPI GetWindowRect Hwnd, VarObjRect If VarPointAPI.x > VarObjRect.Left And _ VarPointAPI.x < VarObjRect.Right And _ VarPointAPI.y > VarObjRect.Top And _ VarPointAPI.y < VarObjRect.Bottom Then IsOnObject = True Else IsOnObject = False End If End Function
tout est là :
la fonction se nomme IsOnObject
elle renvoie un boolean (Vrai/Faux)
d'après son nom, on peux dire qu'elle renvoie vrai si le curseur de la souris est au dessus de l'objet...
l'objet en question ? celui dont on passe le hwnd (via le parametre du même nom)
tout ça pour dire :
If IsOnObject ( Command1.hWnd ) Then
MsgBox "le curseur de la souris est au dessus de mon bouton Command1"
End If
PS: si tu trouve que je réponds assez sèchement, c'est bien le cas.
je n'aime pas le ton que tu prend ni ton syle SMS, qui est à proscrire, d'ailleurs (cf. la charte de bonne conduite, ci-dessous)
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal Hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function PtInRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Private Function IsOnObject(Hwnd As Long) As Boolean
Dim VarPointAPI As POINTAPI
Dim VarObjRect As RECT
GetCursorPos VarPointAPI
GetWindowRect Hwnd, VarObjRect
IsOnObject = (PtInRect(VarObjRect, VarPointAPI.x, VarPointAPI.y) <> 0)
End Function
ou encore mieux :
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Function IsOnObject(Hwnd As Long) As Boolean
Dim Pt As POINTAPI: GetCursorPos Pt
IsOnObject (WindowFromPoint(Pt.x, Pt.y) Hwnd)
End Function
dans un timer ?
avec par ex pour une form :
if IsOnObject form1= then
' action
else
' pas d'action
c'est ca ?
Rnosat
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.