看TrackMouseEvent()
功能。
这需要在鼠标进入窗口时调用(WM_MOUSEMOVE
如果它尚未被跟踪),并且会在鼠标离开时通知您的窗口(WM_MOUSELEAVE
)。
这是一些示例 VB6 代码,但应该可以轻松转换为任何其他语言。
Select Case Msg
Case WM_MOUSEMOVE
If Not MouseInWindow Then
Dim ET As TRACKMOUSEEVENTTYPE
'Set up the mouse leave notification
ET.cbSize = Len(ET)
ET.hwndTrack = Me.hWnd
ET.dwFlags = TME_HOVER Or TME_LEAVE
ET.dwHoverTime = 0
TrackMouseEvent ET
MouseInWindow = True
'The mouse has just entered
Redraw
End If
Case WM_MOUSELEAVE
If MouseInWindow Then
MouseInWindow = False
'The mouse has just left
Redraw
End If
End Select