使用的函數:WindowFromPoint()SetCapture()ReleaseCapture()
說明:在自定義的類中想知道鼠標是否在窗口之中比較容易,
可相反判斷鼠標是否不在窗口之中是比較頭疼的問題。
為了解決這個問題的關鍵是怎樣設置鼠標捕獲窗口是關鍵。
以下是簡單的例子,還可以添加更有效的判斷,把他變成
更為靈活。
void Cxxx::OnMouseMove(UINT nFlags, CPoint point)
{
CButton::OnMouseMove(nFlags, point);
m_bOver=true;
SetCapture();
//將鼠標捕獲設置到指定的窗口。在鼠標按鈕按下的時候,
//這個窗口會為當前應用程序或整個系統接收所有鼠標輸入
POINT p2 = point;
ClientToScreen(&p2);
CWnd* wfp = WindowFromPoint(p2);//從鼠標位置獲取窗口句柄
if (wfp && wfp->m_hWnd != this->m_hWnd)
{
m_bOver= FALSE;
ReleaseCapture();//為當前的應用程序釋放鼠標捕獲
}
Invalidate();
}
說明:這些是本人在學習VC中的一些心得,如果有不對的地方或要補充的地方請來電子郵件:
nenlong@163.net