Mouseoutofwindow() avec les api windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 214 fois - Téléchargée 40 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

Messages postés
132
Date d'inscription
mardi 31 octobre 2000
Statut
Membre
Dernière intervention
2 mai 2004

Super, ca marche bien ! !
Merci merci merci , et a bientot ... pour d'autres api !!
RnoSat
Messages postés
81
Date d'inscription
lundi 18 février 2002
Statut
Membre
Dernière intervention
4 février 2005

ba vla d'un code qu'est bien expliquer ! et merci pour l'adresse des api, ca sert !
Messages postés
18
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
8 mars 2004

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+
Messages postés
18
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
8 mars 2004

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.