Mouseoutofwindow() avec les api windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 413 fois - Téléchargée 42 fois

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

Ajouter un commentaire Commentaires
rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004
2 janv. 2004 à 15:21
Super, ca marche bien ! !
Merci merci merci , et a bientot ... pour d'autres api !!
RnoSat
reivon Messages postés 81 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 4 février 2005
22 mai 2002 à 10:58
ba vla d'un code qu'est bien expliquer ! et merci pour l'adresse des api, ca sert !
vbmore Messages postés 18 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 8 mars 2004
21 mai 2002 à 17:36
J'oubliais, pour les pressés, vous pouvez télécharger "ApiGuide" sur www.allapi.net : il contient beaucoup d'exemples dont celui de TrackMouseEvent

Vous pouvez aussi consulter la rubrique "Subclassing" sur ce site

A+
vbmore Messages postés 18 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 8 mars 2004
21 mai 2002 à 17:33
Connais-tu l'API TrackMouseEvent ?
Elle n'est pas présente dans W95, mais elle permet, grâce au subclassing, de détecté de events que VB6 ne reconnait pas ! (ex : sorite du curseur d'un contrôle, par exemple)

Seul pb : le subclassing implique un débugage casse-tête (beaucoup de contraite : pas de stop, pause, end. Execution de codes tout le temps) mais il sert à plaint de chose ( je parlerais et explique le subclassing en profofondeur ds 1 article qui sortita dans 1 ou 2 mois)

Bonne Prog. @+

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.