Mouseoutofwindow() avec les api windows

Contenu du snippet

Fonction qui permet de savoir quand le curseur de la souris quitte une fenêtre ou entre dans une fenêtre

Source / Exemple :


'----- DANS UN MODULE -----

'***** TYPE UTILISE PAR L'API GETWINDOWRECT() *****
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

'***** TYPE UTILISE PAR L'API GETCURSORPOS() *****
Private Type POINTAPI
    X As Long
    Y As Long
End Type

'***** API POUR OBTENIR LES COORDONNEES DE LA FENETRE *****
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
'***** API POUR OBTENIR LES COORDONNEES DU CURSEUR *****
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'***** FONCTION DETERMINANT SI LE CURSEUR EST DANS LA FENETRE OU NON
Public Function MouseOutOfWindow(handle As Long) As Boolean

  Dim R As RECT	   'déclaration de la variable qui reçoit les coordonnées de la fenêtre
  Dim Pos As POINTAPI  'déclaration de la variable qui reçoit les coordonnées du curseur

    GetWindowRect handle, R   'renvoie les coordonnées de la fenêtre dans <R>
    GetCursorPos Pos              'renvoie les coordonnées du curseur dans <Pos>

    'renvoie FALSE si le curseur est dans la fenêtre, et TRUE si le curseur est à l'extérieur
    MouseOutOfWindow = (Pos.X <= R.Left) Or (Pos.X >= R.Right) Or _
                                    (Pos.Y <= R.Top) Or (Pos.Y >= R.Bottom)

End Function

'----- DANS LE CODE D'UNE FORM (POUR L'EXEMPLE) -----

Private Sub Timer1_Timer()                                       'interval=20
    If MouseOutOfWindow(Form1.hwnd) Then
       Form1.Caption = "En dehor"
    Else
      Form1.Caption = "A l'intérieur"
    End If
End Sub

Conclusion :


La fonction marche pour tous les objets ayant la propriété [HWND]. Par exemple, on peut utiliser la fonction avec un bouton, une frame, une textbox, une picture, ...
Ex.: MouseOutOfWindow(Command1.hwnd)
MouseOutOfWindow(Frame1.hwnd)
MouseOutOfWindow(Text1.hwnd)
MouseOutOfWindow(Picture1.hwnd)

A voir également

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.