Для того, чтобы отследить события MouseOver, MouseOut можно использовать API функцию SetCapture. При этом окно, указанное в этой функции будет реагировать на событие MouseMove независимо от того находится мышка над этим окном или нет. При этом координаты мыши считаются относительно этого окна. Например если мышь находится левее этого окна, то координата X отрицательна. Окно перестает реагировать на это событие, если щелкнуть мышкой или использовать API функцию ReleaseCapture. Введите в коде контрола следующий код:
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long Public Event MouseOver() Public Event MouseOut() Dim CtrMov As Boolean Private Sub UserControl_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) With UserControl If (X < 0) Or (Y < 0) Or (X > .Width) Or (Y > .Height) Then ReleaseCapture CtrMov = False RaiseEvent MouseOut Else If CtrMov = False Then SetCapture .hwnd CtrMov = True RaiseEvent MouseOver End If End If End With End Sub