需要响应三个消息
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_WM_MOUSEMOVE()
myWnd::m_bTracking = false;
void myWnd::OnMouseMove(UINT nFlags, CPoint point)
{
if (!m_bTracking) //鼠标轨迹跟踪
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER; //抓取鼠标离开和鼠标停靠消息
tme.dwHoverTime = 1;
m_bTracking = _TrackMouseEvent(&tme);
}
}
LRESULT myWnd::OnMouseLeave(WPARAM Wparam, LPARAM lParam)
{
m_bTracking = FALSE;//复位鼠标追踪标志
return 0;
}
LRESULT myWnd::OnMouseHover(WPARAM wParam, LPARAM lParam)//鼠标悬挂
{
return 0;
}