mfc鼠标移动到按钮上显示 想在程序运行时鼠标移动到显示提示信息

精选笔记 bchgfjyf56547 2024-04-21 18:29 9 0

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

按钮也是窗口,因此当鼠标移动到按钮上面后WM_MOVE消息就只发送给按钮而不会发送给CTOOLTESTView窗口因此在CTOOLTESTView::OnMouseMove里面是捕捉不到按钮上面的鼠标移动消息的,Picture Control控件在Notify属性为FALSE的情况下鼠标消息是可以穿透的,而按钮控件没有这个功能。如果一定要使用按钮控件,可以在CTOOLTESTView

使用定时器的办法,比如定时时间间隔为10毫秒,每10毫秒检测一次鼠标的位置(使用API GetCursorPos函数,注意,函数名在这里可能拼错,自己在网上搜一下),这个函数获取的位置坐标是屏幕坐标,判断一下是否在按钮里面就可以了。

二、删除标记一个Button控件***想在程序运行时鼠标移动到显示提示信息

1.建一个对话框工程

2.给对话框里添加一个Button控件

3.添建一个以Button为基类的新类MyButton

4.给MyButton添加 OnMouseMove消息(响应移动鼠标消息)

并添加代码

CRect rect;

GetClientRect(&rect);//获得按钮区域

if(rect.PtInRect(point))//鼠标在按钮区域内

{

AfxMessageBox(_T("123"));

}

5.在对话框头文件中添加#include"MyButton.h"头文件(作用新建类才能用)

6.Button控件定义变量选择MyButton变量类

7.当鼠标移动按键上时会提示

(我的是运行在VC6.0写的,不过原理相同)

三、MFC中怎样判断鼠标位于按键上

图片控件不会默认捕获鼠标消息,因此处理代码放在对话框的onlbuttondown这样的鼠标消息中即可。

鼠标消息函数会默认带入鼠标位置,而图片框的位置可以通过图片控件变量或指针的getwindowrect获取。

之后通过rect.ptinrect(point)函数即可判断鼠标是否在图片上,至于图片上的具体位置,就需要你通过crect或者crgn来一一记录了(这并不太容易),之后依然是通过ptinrect和crgn的ptinregion来判断是否在区域(这需要一个循环语句)。

至于显示另一个图片,通过cbitmap导入资源后,就是图片控件的setbitmap就可以了。