MFC捕捉鼠标移动到button上的消息
本人在vs2012下利用OnMouseMove捕捉鼠标移动到button上的消息,代码如下:voidCTOOLTESTView::OnMouseMove(UINTnFla...
本人在vs2012下利用OnMouseMove捕捉鼠标移动到button上的消息,代码如下:
void CTOOLTESTView::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc);
ScreenToClient(&rc);
if (rc.PtInRect(point))
{
AfxMessageBox((CString)"move");
}
CFormView::OnMouseMove(nFlags, point);
}
奈何鼠标移动到按钮上时即使满足if条件也进入不了AfxMessageBox,了解到OnMouseMove好像捕捉不到鼠标移动到button上的消息,我试验了一下Picture Control控件,则可以捕捉到,但是改变Picture Control 的Notify属性为True后,又捕捉不到了。我百度了好多网页论坛亦没找到解决方案,哪位前辈知道这是什么原因啊?如果要捕捉鼠标移动到button上的消息又该如何办?求解救!!!(最好附代码) 展开
void CTOOLTESTView::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc);
ScreenToClient(&rc);
if (rc.PtInRect(point))
{
AfxMessageBox((CString)"move");
}
CFormView::OnMouseMove(nFlags, point);
}
奈何鼠标移动到按钮上时即使满足if条件也进入不了AfxMessageBox,了解到OnMouseMove好像捕捉不到鼠标移动到button上的消息,我试验了一下Picture Control控件,则可以捕捉到,但是改变Picture Control 的Notify属性为True后,又捕捉不到了。我百度了好多网页论坛亦没找到解决方案,哪位前辈知道这是什么原因啊?如果要捕捉鼠标移动到button上的消息又该如何办?求解救!!!(最好附代码) 展开
2个回答
展开全部
按钮也是窗口,因此当鼠标移动到按钮上面后WM_MOVE消息就只发送给按钮而不会发送给CTOOLTESTView窗口因此在CTOOLTESTView::OnMouseMove里面是捕捉不到按钮上面的鼠标移动消息的,Picture Control控件在Notify属性为FALSE的情况下鼠标消息是可以穿透的,而按钮控件没有这个功能。如果一定要使用按钮控件,可以在CTOOLTESTView
使用定时器的办法,比如定时时间间隔为10毫秒,每10毫秒检测一次鼠标的位置(使用API GetCursorPos函数,注意,函数名在这里可能拼错,自己在网上搜一下),这个函数获取的位置坐标是屏幕坐标,判断一下是否在按钮里面就可以了。
使用定时器的办法,比如定时时间间隔为10毫秒,每10毫秒检测一次鼠标的位置(使用API GetCursorPos函数,注意,函数名在这里可能拼错,自己在网上搜一下),这个函数获取的位置坐标是屏幕坐标,判断一下是否在按钮里面就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询