WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

 

参考: http://blog.csdn.net/s_52588/article/details/8230053

 

WM_MOUSEHOVERWM_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消息的触发)