处理鼠标离开窗口的消息 (WM_MOUSELEAVE)
XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />
WM_MOUSELEAVE 是鼠标离开窗口时发出的消息,但是这个消息与普通的鼠标消息不同,要收到WM_MOUSELEAVE消息必须先调用TrackMouseEvent,并且每调用一次TrackMouseEvent 窗口只能收到一次WM_MOUSELEAVE,也就说如果要获得WM_MOUSELEAVE消息的话,当鼠标重新进入窗口时必须调用一次TrackMouseEvent。
static BOOL bTrackLeave=FALSE;
void CMyWnd::OnMouseMove(UINT nFlags, CPoint point)
{
if (!bTrackLeave)
{
// 鼠标第一次移入窗口时, 请求一个WM_MOUSELEAVE 消息
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE;
_TrackMouseEvent(&tme);
bTrackLeave = TRUE;
// 在这里添加处理鼠标进入的代码 :
………………………………
}
}
手工添加消息映射和消息处理函数
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
//{{AFX_MSG_MAP(CMyWnd)
………………………
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
END_MESSAGE_MAP()
LPARAM CMyWnd::OnMouseLeave(WPARAM wp, LPARAM lp)
{
bTrackLeave = FALSE;
// 在这里添加处理鼠标离开的代码 :
…………………………………..
return 0;
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-990346/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-990346/
本文介绍了如何在Windows应用程序中处理WM_MOUSELEAVE消息,即鼠标离开窗口时触发的消息。要正确接收到此消息,需要使用TrackMouseEvent函数进行设置,并在鼠标重新进入窗口时再次调用该函数。
383

被折叠的 条评论
为什么被折叠?



