處理滑鼠離開視窗的訊息 (WM_MOUSELEAVE)
阿新 • • 發佈:2018-12-16
WM_MOUSELEAVE 是滑鼠離開視窗時發出的訊息,但是這個訊息與普通的滑鼠訊息不同,要收到WM_MOUSELEAVE訊息必須先呼叫TrackMouseEvent,並且每呼叫一TrackMouseEvent 視窗只能收到一次WM_MOUSELEAVE,也就說如果要獲得WM_MOUSELEAVE訊息的話,當滑鼠重新進入視窗時必須呼叫一次TrackMouseEvent。
測試滑鼠是否在視窗內,以及滑鼠的離開使用TrackMouseEvent()在滑鼠離開視窗時傳送WM_MOUSELEAVE訊息使用TrackMouseEvent()還可以判斷滑鼠的停留,併發送WM_MOUSEHOVER訊息:
//設定一個狀態量用於記錄和標識滑鼠是否在視窗內 BOOL m_bMouseTracking; //處理滑鼠移動訊息 void CXXXDlg::OnMouseMove(UINT nFlags,CPoint point) { //接收到WM_MOUSEMOVE,而m_bMouseTracking為假時,滑鼠進入視窗。 //設定_TrackMouseEvent TRACKMOUSEEVENT tme; tme.cbSize=sizeof(TRACKMOUSEEVENT); //監控滑鼠離開 tme.dwFlags=TME_LEAVE; tme.hwndTrack=this->m_hWnd; if(::_TrackMouseEvent(&tme)) { m_bMouseTracking=TRUE; //其他滑鼠進入時的操作 } CDialog::OnMouseMove(nFlags, point); }