wnd类中有个WM_MOUSELEAVE消息,对应处理鼠标离开窗体的响应事件,具体的代码段如下:
在.h文件中定义:
afx_msg LPARAM OnMouseLeave(WPARAM wp, LPARAM lp);//OnMouseLeave
在.cpp中:
static BOOL bLeave=FALSE;
BEGIN_MESSAGE_MAP(CtestdlgDlg, CDialog)
。。。
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
。。。
END_MESSAGE_MAP()
void CtestdlgDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (!bTrackLeave)
{
//
TRACKMOUSEEVENT trmv;
trmv.cbSize = sizeof(tme);
trmv.hwndTrack = m_hWnd;
trmv.dwFlags = TME_LEAVE;
_TrackMouseEvent(&tme);
bLeave = TRUE;
// move in
//………………………………
BOOL bLock;
rectCurArea.left =10;
rectCurArea.top =10;
rectCurArea.right =200;
rectCurArea.bottom =200;
bLock=ClipCursor(&rectCurArea);
}
CDialog::OnMouseMove(nFlags, point);
}
LPARAM CtestdlgDlg::OnMouseLeave(WPARAM wp, LPARAM lp)
{
bLeave = FALSE;
ClipCursor(NULL);
// leave code
//…………………………………..
return 0;
}
通过鼠标离开事件可以实现像qq那样的自动隐藏效果