普通情况下,窗体能接收到鼠标发出的消息包括:WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_MOUSEMOVE等。但这里面不包括鼠标的hover和leave消息。当需要用到鼠标的WM_MOUSEHOVER和WM_MOUSELEAVE消息的功能是,需要在WM_MOUSEMOVE函数中调用TrackMouseEvent函数,示例如下:
TRACKMOUSEEVENT tme;
tme.cbSize =sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_LEAVE;// or TME_HOVER
tme.dwHoverTime = 0;
tme.hwndTrack =m_BtnLeft.m_hWnd;
::TrackMouseEvent(&tme);
该函数会向窗体发出leave或者hover信息,窗体可以使用对应函数处理来自该函数的消息。
这样就可以简单的跟踪鼠标的状态。