Как отследить события MouseOver, MouseOut

Для того, чтобы отследить события 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
Hosted by uCoz