MFC 华而不实的鼠标响应事件

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

        前几天搞了注入DLL代码的问题,今天偶然想到如何实现控件响应鼠标事件,如何鼠标移动到某控件上静态编辑框或者鼠标显示提示信息,经过几番搜索,还好全部解决,就上回的代码

先在MainDialogWnd.cpp中声明一个对象用过存放鼠标提示信息

然后在初始化函数OnInitDialog()中设置m_stat,VS20XX的可以略过这段。也有人喜欢用老版本经典的VC6++,VC6的MFC新建的子对话框中通常没有用于初始化对话框的OnInitDialog()函数,我经过上回的学习,也发现我的VC6++代码中没有初始化函数OnInitDialog(),这也是要自己在类向导中添加,于是找遍类向导的信息,竟然没有发现OnInitDialog()这个函数,

手动添加……,我还是再找找相关资料,竟然被我找到了https://jingyan.baidu.com/article/1974b289a697daf4b1f77495.html,函数名为WM_INITDIALOG,而非OnInitDialog,害得我好找啊,于是这样:

在初始化OnInitDIalog里添加如下代码:

BOOL CMainDialogWnd::OnInitDialog() 
{
	CDialog::OnInitDialog();
	//按钮等鼠标悬浮提示初始化
	m_stat.Create(this);  
	m_stat.AddTool( GetDlgItem(IDC_BUTTON1), "固件无法升级时使用,详见说明书" ); //IDC_BUTTON为你要添加提示信息的按钮的ID
	m_stat.AddTool( GetDlgItem(IDC_BUTTON2), "小心点击,可能会格式化" ); //IDC_BUTTON为你要添加提示信息的按钮的ID
	//m_stat.AddTool( GetDlgItem(IDC_CHECK_CANRX_EN), "警告:在进行Bootloader下载时请不要打开【CAN接收】的开关!!!" );
	//m_stat.AddTool( GetDlgItem(IDC_STATIC_Version), "作者邮箱:wangpeijin0326@126.com" );
	m_stat.SetDelayTime(0); //设置延迟,如果为0则不等待,立即显示
	m_stat.SetTipTextColor( RGB(0,0,255) ); //设置提示文本的颜色
	m_stat.SetTipBkColor( RGB(255,255,255)); //设置提示框的背景颜色
	//m_stat.SetMaxTipWidth(600);//设置文本框的最大宽度,注意里边的数值单位为像素,所以要通过不断测试来选定最理想的宽度。利用此句可显示多行
	m_stat.Activate(TRUE); //设置是否启用提示
	//按钮等鼠标悬浮提示初始化完毕
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

象这样子

在类向导里添加PreTranslateMessage消息函数,同样如下

添加如下代码

BOOL CMainDialogWnd::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
  m_stat.RelayEvent(pMsg); 
return CDialog::PreTranslateMessage(pMsg);
}

这是鼠标提示信息完成;如果要鼠标移到某控件,静态编辑框显示相应信息,仍然在上面的函数中添加如下代码

if(pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->GetSafeHwnd() && pMsg->message == WM_MOUSEMOVE)
	{ 
		CString windowText;
		GetDlgItem(IDC_BUTTON1)->GetWindowText(windowText); //得到按钮文本
		GetDlgItem(IDC_STATIC1)->SetWindowText("这不是按扭"); //显示到静态文本框
	}else if(pMsg->hwnd == GetDlgItem(IDC_BUTTON2)->GetSafeHwnd() && pMsg->message == WM_MOUSEMOVE)
	{
		CString windowText;
		GetDlgItem(IDC_BUTTON2)->GetWindowText(windowText);
		GetDlgItem(IDC_STATIC1)->SetWindowText("这也不是按扭");
	}

象这样:

OK,完成,试下

然后鼠标放到BUtton1上

然后鼠标放到BUtton2上

打完收工

vtk与MFC绑定 关键是两步: 一.VTK_MFC编程的renWin和iren分别是vtkWin32OpenGLRenderWindow ,vtkWin32RenderWindowInteractor 二.renWin->SetParentId(this->m_hWnd);            //注意这一步,设置绘制窗口 阅读详情

相关推荐

Halcon与MFC联合编程初记一三二

Holcon与MFC联合编程初记一三二 本文使用的是版本为20.11的halcon软件和2015的vs进行联合编程。 环境配置:借鉴大佬的文章。 VisualStudio2017MFC和Halcon18联合编程环境配置 https://blog.csdn.net/weixin_42115081/article/details/107541571 本项目要检测的目的是检测到围棋棋盘和棋子,返回棋子的位置,并判断棋子的是在线上、两条线的交点,还是在框内。 在vs中创建一个对话框的程序 ***在对话框内

weixin_44764711的博客 758

Halcon-MFC-联合编程之用鼠标缩放图像、拖动图像

Halcon-MFC-联合编程之用鼠标缩放图像、拖动图像 内附完整的lib 头文件 DLL文件,编译后即可运行,也有已经编译好的exe运行程序可供测试。

MFC游戏开发》笔记四 键盘响应鼠标响应:让人物动起来

本系列文章由七十一雾央编写,转载请注明出处。 http://blog.csdn.net/u011371356/article/details/9313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5&mod=personinfo           在上一节笔记里,我们讲解了贴图的透明效

C++游戏开发 2万+

VTK鼠标键盘事件:观察者模式

VTK鼠标键盘事件会优先于QT的鼠标键盘事件,而且会吃掉这些事件,使得QT的 //void mouseMoveEvent(QMouseEvent * event) override; 这种事件得不到执行。 这主要是通过QVTKOpenGLWidget类来实现的。 所以我们只能使用VTK的鼠标响应机制来实现鼠标键盘的控制。 VTK鼠标键盘事件响应是用观察者模式,也就是先注册观...

C++ 爱好者 make_it_simple888 5159

Visual C++编程之MFC概述

学习Visual C++,自然就离不开MFC这个东西。MFC全称Microsoft Foundation Classes,也就是微软基础类库。它是VC++的核心,是C++与Windows API的结合,很彻底的用C++封装了Windows SDK(Software Development Kit,软件开发工具包)中的结构和功能,还提供了一个应用程序框架,此应用程序框架为软件开发者完成了一些例行化的

LL-Studio的专栏 1461

VTK交互系统 4 自定义交互器样式2 键盘鼠标交互器设置

现在我们修改一下其中一个事件函数: void my3DCameraStyle::OnLeftButtonDown(void) { vtkInteractorStyleUser::OnLeftButtonDown(); GetLastPos(m_OldPos[0], m_OldPos[1]); cout << "m_OldPos = " << m_OldPos[0]...

Dezeming的博客 9459

关于MFC的使用总结之八——CGridListCtrlEx鼠标响应事件

MFC的使用总结之八——CGridListCtrlEx鼠标响应事件写在前面点击表格触发事件表格中添加按钮,点击按钮触发事件运行结果如下最终程序 写在前面 MFC是一种用c++设计交互界面的的开发工具,在二三十年前比较流行,但目前比较少用了。所以现在使用MFC进行开发,相关资料的查找也比较困难。最近做了一个与MFC有关的项目,其中用到的相关知识总结于此。在使用工具时,最好的资料其实就是那个库本身,查...

墨藍的博客 2108

MFC实战篇——添加鼠标右键响应菜单

文章目录一、新建MFC对话框项目二、添加菜单资源三、添加右键响应函数3.1 方法一:WM_CONTEXTMENU响应函数方法2:WM_RButtonDown响应函数四、添加菜单响应函数五、测试六、升级版 一、新建MFC对话框项目 二、添加菜单资源 添加一个主菜单和3个子菜单。 三个子菜单的ID分别为: 三、添加右键响应函数 3.1 方法一:WM_CONTEXTMENU响应函数 在类视图中为对话框添加消息WM_CONTEXTMENU的响应函数。 在响应函数中添加代码,加载指定的菜单: v

WaitFoF 6863

mfc鼠标、键盘响应事件

对于mfc这东西,你真的必要跟我扯一大堆怎么类,什么派生,什么鬼东西 告诉我怎么做出一个个小功能,我记住它就可以了 这期为大家带来MFC鼠标响应事件 这也是所谓的MFC中的“消息映射事件” 一、基本目标 1、有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键->属性的Caption改成“关闭”二字就可以了 2、鼠标在对

编程记录,亲测有效 2万+

MFC 鼠标双击响应单击事件

最近做练习双击鼠标左键时老是相应单击事件,网上查询和自我探索后解决问题,代码如下: 我写的代码为单击鼠标左键确定圆心,鼠标移动时产生橡皮筋线,双击鼠标结束,单双击鼠标之间的距离为圆的半径 void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)  { // TODO: Add your message handler code he

qq_26669845的博客 7299

mfc鼠标响应事件截取roi区域

首先对需要的控件创建鼠标响应函数,在项目—类导向——消息中,找到onlbuttondown,onmove和onlbuttonup,添加至可用后双击就可以出现编辑函数。在函数中进行编辑 在头文件中添加: CImage t_img; BOOL move_flag; BOOL down_flag; BOOL up_flag; int show_width; int show_heig...

小陆的博客 1434

[MFC]MFC的BUTTON控件响应鼠标按下和抬起

有效方法:BOOL CButtontestDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message==WM_LBUTTONDOWN) {  if (pMsg->hwnd == GetDlgItem(IDC_B

hicoder的专栏 1万+

MFC slider拖动事件响应

在使用MFC的slider control时,对于其拖动的默认响应函数OnCustomdrawSlider,会响应有关draw的事件,包括非操作区的变换导致的界面重绘。 而有的时候我们希望只响应对slider的拖动事件,而不响应其他事件。如在制作自定义视频播放器的进度条时,我们希望鼠标在拖动slider时,不允许其他的线程或程序操作这个slider以免造成拖动失败。 看了其他网友有关“判断

川上行舟 1万+

MFC鼠标事件响应

 最近做用户交互,发现双击的消息WM_RBUTTONDBLCLK总是被OnLButtonDown截取。原来,如果在窗口风格中未包含CS_DBLCLKS,而使用者在短时间内双击了鼠标按键,那么窗口消息处理程序会接收到下面这些消息:               WM_LBUTTONDOWN               WM_LBUTTONUP               WM_LBUTTONDOWN

Hello Tiger的专栏 1万+

MFC中如何在指定的区域响应鼠标单击事件

解决方案 在单文档中单击鼠标左键时没有任何响应,但当移动到某个区域单击时会发生响应事件。如在上一个鼠标变形的区域响应鼠标的单击事件。(130,60)(210,60)(130,150)(210,150) 具体步骤: 1.单击View菜单->ClassWizard->Project:为当前工程名MFCDemo Class name:CMFCDemoView Message

江南孤鹜——“知行合一”的Software Developer 1万+

MFC实战篇——提示框随鼠标移动动态响应

文章目录1. 新建对话框项目2. 添加一个CToolTipCtrl变量3. 在对话框OnInitDialog()中加载提示框4. 重写对话框的PreTranslateMessage消息5. 添加鼠标移动响应函数 为鼠标添加动态的提示框。 当鼠标在图片控件的图像区域中移动时,动态跟新鼠标移动过程中图像的像素。 1. 新建对话框项目 2. 添加一个CToolTipCtrl变量 在对话框头文件ADDToolTipDlg.h中添加一个相应的CToolTipCtrl类型的变量: CToolTipCtrl m_t

WaitFoF 3383

MFC按钮控件鼠标按下抬起响应

最近在用MFC这个几百年前的架构做工程的时候发现,其按钮控件没有自带鼠标按下和抬起的消息响应函数,因此做了一番研究。 实现很简单,要实自己实现“BOOL PreTranslateMessage(MSG* pMsg);”这个虚类,先在对话框主类的“.h”中声明一下: BOOL PreTranslateMessage(MSG* pMsg);//响应鼠标按下抬起 接着实现下即可: BOOL CButt...

weixinhum 3780

MFC实现鼠标中键滑动WM_MOUSEWHEEL响应,使得图形缩放

MFC实现鼠标中键滑动WM_MOUSEWHEEL响应,使得图形缩放 已经实现,没有问题 CRenderView基类是CView,实现显示操作三维模型。 实现鼠标滚轮缩放简单步骤如下: (1)响应视图类的WM_MOUSEWHEEL消息 (2)在响应函数里面实现:       有滚动引起的缩放比例变化;       刷新视图区域,图形缩放显示;      设置滑竿位置,刷新滑竿所在类的

j123kaishichufa的专栏 2万+

MFC中实现鼠标点击事件响应的完整指南

在Windows应用程序开发中,事件驱动是核心的编程范式之一。MFC(Microsoft Foundation Classes)通过消息映射机制替代传统的WndProc全局函数,实现了面向对象的消息处理。该机制利用和等宏,在类内部声明和定义消息与成员函数的对应关系。这些宏最终生成一个静态的消息映射表,由MFC框架在运行时遍历并调用匹配的处理函数。// 示例:消息映射的基本结构ON_WM_LBUTTONDOWN() // 映射左键按下消息消息映射结合MFC的。

weixin_42113456的博客 635
上一篇: 记一次VS2010学写代码过程(五)
下一篇: 记一次VS2010学写代码过程(一)
hsoftk
博客等级 码龄11年 18粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值