Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionOption Explicit '------- Déclarations d'API ------- Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function GetCapture Lib "user32" () As Long Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long,ByVal yPoint As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,pRect As RECT) As Long '------- Déclarations des événements appelés ------- Event MouseLeave() Event MouseEnter(Button As Integer, Shift As Integer, X As Single, Y As Single) Event Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single) Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Si le curseur a été capturé par le contrôle If GetCapture() = UserControl.hwnd Then 'Variable contenant le rectangle du contrôle Dim ControlRect As RECT 'Définition de la valeur de la variable GetWindowRect UserControl.hwnd, ControlRect 'si le pointeur quitte le contrôle '(que la fenêtre est différente de celle du contrôle) If WindowFromPoint(ControlRect.Left + X, ControlRect.Top + Y) <> UserControl.hwnd Then ' on libère la capture et on apelle l'événement de sortie RaiseEvent MouseLeave Call ReleaseCapture Else 'La souris bouge sur le contrôle, on appelle l'événement "mousemove" RaiseEvent Mousemove(Button, Shift, X, Y) End If Else ' Lorsque la souris entre sur le contrôle, on en fait la capture. ' C à d que tous les événement ne seront plus retransmits qu'à ce contrôle. RaiseEvent MouseEnter(Button, Shift, X, Y) Call SetCapture(UserControl.hwnd) End If End Sub