MFC捕捉鼠标移动到button上的消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC捕捉鼠标移动到button上的消息相关的知识,希望对你有一定的参考价值。

本人在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上的消息又该如何办?求解救!!!(最好附代码)

按钮也是窗口,因此当鼠标移动到按钮上面后WM_MOVE消息就只发送给按钮而不会发送给CTOOLTESTView窗口因此在CTOOLTESTView::OnMouseMove里面是捕捉不到按钮上面的鼠标移动消息的,Picture Control控件在Notify属性为FALSE的情况下鼠标消息是可以穿透的,而按钮控件没有这个功能。如果一定要使用按钮控件,可以在CTOOLTESTView
使用定时器的办法,比如定时时间间隔为10毫秒,每10毫秒检测一次鼠标的位置(使用API GetCursorPos函数,注意,函数名在这里可能拼错,自己在网上搜一下),这个函数获取的位置坐标是屏幕坐标,判断一下是否在按钮里面就可以了。
参考技术A 那个按钮也是窗口,因此当鼠标移动到按钮上面后WM_MOVE消息就只发送给按钮而不会发送给CTOOLTESTView窗口因此在CTOOLTESTView

以上是关于MFC捕捉鼠标移动到button上的消息的主要内容,如果未能解决你的问题,请参考以下文章

MFC当鼠标移动到某对象范围的上方时触发的事件是啥?

MFC中单击button并随鼠标移动怎么实现?

MFC中如何让静态控件响应鼠标移动的消息?

MFC 中,按钮和其他(比如:图片框、列表框)控件怎么响应鼠标移动消息?

MFC如何让鼠标移动到按钮上马上改变鼠标形状为手型

猎豹MFC--拖动无边框窗体