( 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