鼠标离开窗口或控件及悬停的消息(源码)
这功能很常用,很多人自己用定时器做。
其实这是微软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,子类化窗口
联系客服