先添加消息映射,在头文件中
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
在源文件中
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
为类添加WM_MOUSEMOVE WM_MOUSELEAVE WM_MOUSEHOVER消息
在类中定义成员变量如下:
BOOLEAN m_bTracking; //代表是否设置了追踪鼠标事件
BOOLEAN m_bHover; // 代表是否停留在控件上
并在构造函数中初始化为 FALSE
在OnMouseMove()中加入如下代码
if (!m_bTracking)
{
TRACKMOUSEEVENT Tme;
Tme.cbSize = sizeof(Tme);
Tme.hwndTrack = GetSafeHwnd();
//整个这段代码就是设置鼠标消息追踪
Tme.dwFlags = TME_LEAVE|TME_HOVER;
//追踪消息可以设置TME_LEAVE|TME_HOVER
Tme.dwHoverTime = 1;
if (_TrackMouseEvent(&Tme))
m_bTracking=TRUE;
}
OnMouseHover()
{
m_bHover=TRUE;
。。。。。。。
}
OnMouseLeave()
{
m_bTracking=m_bHover=FALSE;
。。。。。。。。
}