使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
来源:互联网 发布:高斯键盘知乎 编辑:程序博客网 时间:2024/04/30 13:50
默认情况下,窗口是不响应WM_MOUSELEAVE和WM_MOUSEHOVER消息的,所以要使用_TrackMouseEvent函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会Post这两个消息到指定窗口。
使用方法:
1.在窗口类中定义一个变量来标识是否追踪当前鼠标状态,之所以要这样定义是要避免鼠标已经在窗体之上时,一移动鼠标就不断重复产生WM_MOUSEHOVER。
BOOL _bMouseTrack=TRUE;
2.在OnMouseMove中调用_TrackMouseEvent函数
if (_bMouseTrack) //若允许追踪,则。
{
TRACKMOUSEEVENT csTME;
csTME.cbSize = sizeof(csTME);
csTME.dwFlags = TME_LEAVE|TME_HOVER;
csTME.hwndTrack = m_hWnd;//指定要追踪的窗口
csTME.dwHoverTime = 10; //鼠标在按钮上停留超过10ms,才认为状态为HOVER
::_TrackMouseEvent(&csTME); //开启Windows的WM_MOUSELEAVE,WM_MOUSEHOVER事件支持
_bMouseTrack=FALSE; //若已经追踪,则停止追踪
}
3.在OnMouseLeave中再次允许追踪鼠标状态
_bMouseTrack=TRUE;
4.备注:这两个消息的映射要自己写
ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- _TrackMouseEvent 响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息
- WM_MOUSELEAVE和WM_MOUSEHOVER消息
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- 让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息
- 关于MFC中WM_MOUSEHOVER和WM_MOUSELEAVE消息的使用
- 解决WndProc无法捕获捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息的问题
- WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- 响应WM_MOUSEHOVER和WM_MOUSELEAVE
- 处理WM_MOUSELEAVE和WM_MOUSEHOVER
- WM_MOUSEHOVER 和 WM_MOUSELEAVE
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 马戏团人塔问题
- Draggable 可拖动
- 知识交易如何才能做到“安全”“诚信”?
- vb.net 2010/2008 导出到excel,无需引用
- CPU-Z v1.62
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- 谁是最好的Coder
- opengl编程指南
- 【JavaWeb】画验证码图片
- Activity 启动模式
- Hibernate事务的高级应用
- 查询redo logfile的使用率 tablespace 的自由空间
- 2012-10-29
- Easui中datagrid实现动态控制columns