( Sources convertis en 6 couleurs avec mon programme VB to HTML)
'================================================================================== ' Permet de simuler l'événement MOUSE OUT sur les controls ayant un HWND ' ' si vous trouvez un BUG ou que vous enrichisser cet OCX ' merci de me faire parvenir vos améliorations et/ou commentaires ' ' adresse en cours : fred.just@free.fr ' site actuel : http://fred.just.free.fr/ ' adresse de secours : fredjust@hotmail.com ' '================================================================================== Type POINTAPI X As Long Y As Long End Type Dim Surveille As Control Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function ScreenToClient Lib "user32" _ (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 'Déclarations d'événements: Event MouseDown(Button As Integer, Shift As Integer) Event MouseMove(Button As Integer, Shift As Integer, ByVal X As Single, ByVal Y As Single) Event MouseUp(Button As Integer, Shift As Integer) Event MouseOut() '================================================================================== ' '================================================================================== Private Sub Capture_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) RaiseEvent MouseDown(Button, Shift) End Sub '================================================================================== ' '================================================================================== Private Sub Capture_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Xi, Yi As Single Dim xyCursor As POINTAPI GetCursorPos xyCursor ScreenToClient Surveille.hwnd, xyCursor Xi = xyCursor.X * Screen.TwipsPerPixelX Yi = xyCursor.Y * Screen.TwipsPerPixelY If Xi < 0 Or Yi < 0 Or Xi > Surveille.Width Or Yi > Surveille.Height Then ReleaseCapture RaiseEvent MouseOut Else RaiseEvent MouseMove(Button, Shift, Xi, Yi) End If End Sub '================================================================================== ' '================================================================================== Public Sub LookFor(aControl As Variant) Set Surveille = aControl SetCapture Capture.hwnd End Sub '================================================================================== ' '================================================================================== Private Sub Capture_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) RaiseEvent MouseUp(Button, Shift) SetCapture Capture.hwnd End Sub '================================================================================== ' '================================================================================== Private Sub UserControl_Resize() Width = Capture.ScaleWidth Height = Capture.ScaleHeight End Sub '================================================================================== ' '================================================================================== Public Sub ForceMouseOut() ReleaseCapture RaiseEvent MouseOut End Sub