使用的函数: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