鼠标离开窗口或控件及悬停的消息(源码)
这功能很常用,很多人自己用定时器做。
其实这是微软WIN编程里本来就有的功能,只是很少被人提及,很多人不知道而以。
下面编程环境:FireFly for FreeBASIC (其它可以稍加改改即可)
Function FORM2_CUSTOM ( _
hWndForm as HWnd, _ ' 窗体句柄
wMsg as UInteger, _ ' 消息类型
wParam as WPARAM, _ ' 第一个消息参数
lParam as LPARAM _ ' 第二个消息参数
) as Long
Dim entTrack as tagTRACKMOUSEEVENT
Select Case wMsg
Case WM_MOUSELEAVE '鼠标出窗口
Print "鼠标出窗口"
Case WM_MOUSEHOVER '鼠标悬停
Print "悬停"
Case WM_NCHITTEST '启用鼠标检查
entTrack.cbSize=SizeOf(tagTRACKMOUSEEVENT)
entTrack.dwFlags=TME_LEAVE Or TME_HOVER '移出 和 悬停 标志
entTrack.hwndTrack=hWndForm '被检查窗口或控件
entTrack.dwHoverTime =300 '悬停时间 ms
TrackMouseEvent @entTrack
End Select
End Function
如果是VB,那需要
1,声明API
2,子类化窗口