case WM_MOUSEHOVER:
{
bMouseTracking = false;
// do sth
break;
}
case WM_MOUSEMOVE:
{
if(!bMouseTracking)
{
TRACKMOUSEEVENT tme = { 0 };
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_HOVER | TME_LEAVE;
tme.hwndTrack = hWndTracking;
tme.dwHoverTime = 1000UL;
bMouseTracking = true;
_TrackMouseEvent(&tme);
bMouseTracking = true;
}
// do sth
break;
}
当程序中调用了TrackMouseEvent函数之后,在调用TrackMouseEvent时指定的时间里,鼠标盘旋在窗口的客户区,则产生WM_MOUSEHOVER消息。在处理该消息时,MouseTracking一般会停止。如果需要继续跟踪,则应当再次调用TrackMouseEvent。
当程序中调用了TrackMouseEvent函数之后,在调用TrackMouseEvent时指定的时间里,在鼠标离开调用TrackMouseEvent时指定的窗口客户区时,会则产生WM_MOUSELEAVE消息。在处理该消息时,MouseTracking一般会停止。如果需要继续跟踪,则应当再次调用TrackMouseEvent。