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