标签:
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
参考: http://blog.csdn.net/s_52588/article/details/8230053
WM_MOUSEHOVER和WM_MOUSELEAVE消息,可以用来实现,当鼠标放在/离开某个窗体或窗体组件一段时间时,触发一系列的操作
例如:
Tooltips的实现原理,就是和这个类似的,当鼠标放在button上一小会时,就会弹出提示prompt。
例如:
QQ的窗体,当我们鼠标移动到 QQ图标时,会弹出提示,而当我们鼠标移开时,这些提示就消失了,应该也是类似原理。,
但这两个消息缺省是不会被触发的,需要我们在OnMouseMove中进行触发处理,
if (!m_bTracking) { // 鼠标移入窗时,请求WM_MOUSEHOVER和WM_MOUSELEAVE消息 TRACKMOUSEEVENT tme; //鼠标跟踪事件定义 tme.cbSize = sizeof(tme); tme.hwndTrack = m_hWnd; //跟踪窗体,预计也可以用于跟踪窗体内的组件 tme.dwFlags = TME_LEAVE|TME_HOVER; //触发两种消息类型: TME_LEAVE 和 TME_HOVER tme.dwHoverTime = 1; //触发条件(时间长度要求) m_bTracking = _TrackMouseEvent(&tme); //开始跟踪 } |
触发后,就可以在 条件(触发条件 & 时间要求) 达到后,发送 WM_MOUSEHOVER/WM_MOUSELEAVE消息。
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发
标签:
原文地址:http://blog.csdn.net/chunyexiyu/article/details/46359267