您的位置:首页 > 其它

WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发

2015-06-04 12:55 288 查看
 (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 转载请标明来源)

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: