1.在类中定义成员变量:
//鼠标事件跟踪
TRACKMOUSEEVENT * TME;
BOOL m_IsCanTrack;
2.构造函数重初始化:
m_IsCanTrack = TRUE;
TME = new TRACKMOUSEEVENT;
3.添加消息函数:
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
ON_WM_MOUSEMOVE()
ON_WM_MOUSEHOVER()
ON_WM_MOUSELEAVE()
4.函数实现:
void CVMButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rc;
GetClientRect(rc);
if (m_IsCanTrack)
{
TME->cbSize = sizeof(TRACKMOUSEEVENT);
TME->dwFlags = TME_LEAVE | TME_HOVER;
TME->dwHoverTime = 10;
TME->hwndTrack = m_hWnd;
if (::_TrackMouseEvent(TME))
{
m_IsCanTrack = FALSE;
}
}
CButton::OnMouseMove(nFlags, point);
}
void CVMButton::OnMouseHover(UINT nFlags, CPoint point)
{
m_IsCanTrack = FALSE;
ButtonStateMov();
CButton::OnMouseHover(nFlags, point);
}
void CVMButton::OnMouseLeave()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_IsCanTrack = TRUE;
ButtonStateSet(m_state);
CButton::OnMouseLeave();
}