多个动态创建的按钮绑定同一消息响应函数

MFC 如何解决多个按钮响应一个函数的问题 这个记录主要是解决上一个动态创建按钮控件时遗留下的一个问题,即有多个控件,它们做的动作几乎一样,都是点击它时弹出它的文本, 那么这里的代码除了绑定消息那里与ID有关外,其它的代码差不多,如果有一百个或都更多的按钮,难道我要一个一个的绑定吗? 说了这么多问题就是如何解决多个按钮响应一个函数? 解决办法是: ON_COMMAND_RANGE BEGIN_MESSAGE_MAP(CCtrl 阅读详情

问题的提出:

      最近在编程时,要在WM_CREATE函数中动态创建10个按钮,但在由于这些按钮是动态创建的,不可能手写十个按钮响应函数吧,如果更多按钮,手写按钮响应函数就更不靠谱了。所以我们可以按照如下代码将多个动态创建的按钮绑定同一消息响应函数

BEGIN_MESSAGE_MAP(CGatherDlg, CDialog)

// 参数2为ID最小的按钮,参数3为ID最大的按钮,参数2到参数3的按钮id必须连续

ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_X, ONButtonClick) 
END_MESSAGE_MAP()

void CXXDlg::OnButtonClick(UINTnID)
{
  
UINT
nIndex = nID - IDC_BUTTON_1;
CString str;
str.Format(_T("%d"), nIndex);
AfxMessageBox( str);
}

注意:

ON_CONTROL_RANGE宏的第二个参数为ID最小的按钮,第三个参数为ID最大的按钮,第二个参数到第三个参数的按钮id必须连续且id必须大于0

ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_X, ONButtonClick) 

MFC中动态创建BUTTON及添加响应的响应 试了一下在MFC中动态创建按钮,主要步骤如下:1.在头文件(**Dlg.h)中添加一个CButton类型的指针pbutton;2.在(**Dlg.cpp)的构造函数中初始化pbutton:pbutton=new CButton;(初始化一定不能忘记);3.在OnInitDialog中创建BUTTON:        pbutton->Create(_T("Button"),WS_CHILD|WS_VISIBLE|BS_FLAT|BS_PUSHBUTTON,CRect     (570,355,630,400 阅读详情

相关推荐

C#动态生成控件以及添加事件处理

有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在C#下一般方式是:  private Button Db=new Button() ;      Db.Name="Dy_Button"           //设定名称      Db.Location=new Point(100,200);//设定位置      。。。。//其他属性设置   

安安的专栏 955

MFC中,多个BUTTON响应同一事件

有10个Button,如何让他们响应同一个事件函数,并且知道是哪个Button触发的 解决方法:  1.让十个Button的资源号连续 2.Dlg.h中添加代码: void   OnButtonClicked(UINT   uId) ; 3.Dlg.cpp的MESSAGE_MAP中添加代码: ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, I

u010470511的专栏 1319

Unity ToggleGroup深度解析:解决多选、状态同步与事件绑定三大难题

在Unity UI开发中,组件间的状态管理与事件交互是构建稳定界面的基础。ToggleGroup作为管理互斥选择的核心组件,其工作原理基于事件驱动与状态同步机制,通过维护组内Toggle的选中状态来确保逻辑一致性。理解其内部机制对于实现复杂的用户交互至关重要,能有效提升UI的可靠性与用户体验。在实际开发中,开发者常遇到动态生成选项时的多选异常、视觉与逻辑状态不同步,以及事件响应与数据绑定混乱等问题。本文聚焦于这些高频痛点,结合ToggleGroup的互斥逻辑与事件流,深入剖析问题根源。通过解析Toggle的

weixin_33835103的博客 355

MFC 多个控件用同一个消息响应函数

最近做一个小工具,里面用到很多的combox控件,为每个控件都添加一个消息响应函数感觉不太方便,太重复了,于是都调用同一个响应函数,但是问题来了,检测控件变化的函数没有参数,要在响应函数里边找到对应的ID,要花些心思,功夫不负有心人,解决方法如下: void CSQliteMFCDlg::OnCbnSelchangeComboxAny() { // TODO: 在此添加控件通知处理程序代码

fz835304205的专栏 4825

高效IT运维报告编写指南:实战经验与模板分享

本文提供了一份全面的IT运维报告编写指南,涵盖实战经验与实用模板分享。文章详细解析了高效运维报告的核心要素,包括结构设计、数据收集自动化和可视化技巧,并提供了月度报告和故障分析报告模板。通过自动化工具和写作技巧,帮助团队提升报告质量,支持决策和问题追踪。

u5v6w7的博客 927

Linux系统杀毒软件深度评测:8款主流工具对比(2025最新版)

本文针对Linux服务器/桌面环境,实测8款杀毒软件,涵盖开源免费、企业级防护、轻量级工具等类型,附保姆级安装教程和避坑指南,新手也能5分钟选对工具!

awei0916的专栏 1万+

MFC动态按钮的创建及其消息响应(自定义消息)

动态按钮(多个)的创建: 1、在类中声明并定义按钮控件的ID #define IDC_D_BTN 10000 2、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针) 3、手动释放对象指针 下面是动态生成多个按钮的例子: CButton* btn = new CButton[5]; DWORD dwStyle = WS_CHILD ...

weixin_30455023的博客 488

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4407

MFC动态创建控件及其消息响应函数

原文链接:http://www.cnblogs.com/gaohongchen01/p/4046525.html 动态按钮(多个)的创建: 1、在类中声明并定义按钮控件的ID #define IDC_D_BTN 10000 2、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针) 3、手动释放对象指针 下面是动态生成多个按钮的例子: CBut...

我的专栏 1093

STM32异常与中断过程详解

1. 异常与中断概念引入 异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;中断一般来自硬件(如片上外设、外部I/O输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。但无论是异常还是中断,都会引起程序执行偏离正常的流程,转而去执行异常/中断的处理函数。 下面对异常和中断的介绍,如果中断信号的产生原因来自CPU内部,则称之为异常;如果中断信号来

luobeihai的博客 1万+

超详细Matlab R2021a免费安装教程(附安装包)

Matlab是一种高级技术计算语言和交互式环境,用于算法开发、数据可视化和数值计算。它集成了数学、工程和科学计算的丰富函数库,提供了强大的数据分析和绘图工具。Matlab还支持并行计算和大规模数据处理,适用于各种领域,如信号处理、图像处理、控制系统、机器学习等。

waicsdn_haha的博客 1万+

MFC中动态创建button及添加响应事件

MFC中动态创建button及添加响应的事件,主要步骤如下: 1、在头文件(**Dlg.h)中添加一个CButton类型, 例如:CButton btn; 2、在(**Dlg.cpp)的OnInitDialog中创建并显示button: btn.Create(“按钮”, WS_CHILD | BS_DEFPUSHBUTTON, CRect(10, 10, 100, 100), this, ...

u011555996的博客 3653

实现 PDF 添加水印的五种方式

PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。

逸轩 6473

7.3动态创建按钮

单击对话框中某个按钮,就动态创建一个新按钮。 首先将程序代码恢复到创建模态对话框那个时候的代码。非模态对话框实现起来比较困难。 为该对话框添加一个按钮: 鼠标双击ResourceView->IDD_DIALOG,打开资源编辑窗口。 用鼠标单击控制面板上面的按钮控件,在对话框适当位置上拖出一个适当大小的按钮;用鼠标右键单击该按钮,选择属性对话框,将按钮的ID改为IDC_BTN_ADD,Capt...

qq_42148307的博客 714

用Simulink对Carsim车辆进行档位控制

用Simulink对Carsim车辆进行档位控制一、carsim中的档位设置为开环控制二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear三、双击进去设置常量为 0四、输入和输出IO通道五、验证 :输入 为 3 档 ----- 输出 为 3!六、参考 一、carsim中的档位设置为开环控制 二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear 三、双击进去设置常量为 0 四、输入和输出IO通道 五、验证 :输入 为 3 档 -

qq_42027654的博客 2602

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3423

MFC中动态创建控件及添加消息响应的方法实例

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。   一、创建动态控件:   为了对照,我们先来看一下静态控件的创建。   放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。   静态控件不需要调用Create()函数来创建。   而创建动态控件有很大不同,以下以按钮为例,看一下动态控件的创建过程:   .

u011555996的博客 1745

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MFC动态创建控件及添加消息响应

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。    一、创建动态控件:   为了对照,我们先来看一下静态控件的创建。   放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。

luy3728000的轨迹 3254

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MFC关于Menu菜单事件不响应问题

首先说一下添加菜单事件: 1.资源视图添加Menu 菜单,添加菜单按钮,更改按钮ID ==》ID_LOGOUTDEV; 2.绑定消息响应函数 ON_COMMAND(ID_LOGOUTDEV, &CThermometryDlg::OnLogoutDev) 3.OnLogoutDev() 函数实现。 4.在需要弹出菜单的地方加入如下代码: ...

若歌的博客 3486

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MFC动态创建控件并响应事件代码实现过程

MFC动态创建控件以及响应动态创建的控件的事件的实现方法如下。 1.创建对象     用new进行动态创建一个对象。然后调用Create函数创建窗口,在函数的父窗口参数中传入this或者用AfxGetMainWnd()获取的父窗口对象指针。最后一个窗口ID先自定义一个ID名。 2.定义ID宏     在cpp文件中,定一个创建对象时自定义的ID的宏,给予一个数字,不要和系统资源的ID值重复

Qsir的专栏 2426

VC中动态添加控件,并且响应控件的消息

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。  一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不

xdhywj的专栏 1917

MFC笔记二

1.MFC中动态创建控件(以CButton为例) 1.在xxdlg.h中添加CButton控件类指针 CButton *mybutton 2.在xxDlg::OnInitDialog()函数中初始化控件指针 mybutton=new CButton(); 3.在String talbe中设置控件的唯一ID 例如IDC_MYBUTTON 然后在Caption中添加对应的说明文字。 4

月出皎兮。 佼人僚兮。 舒窈纠兮。 劳心悄兮。 1232

在MFC中动态创建控件以及事件响应

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。   一、创建动态控件:   为了对照,我们先来看一下静态控件的创建。   放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。   静态控...

编程资料大全 113

解读BOLT例子——HelloBolt4

HelloBolt4:响应事件  在界面中加入交互,响应各种事件,在脚本代码中更新界面效果.         当鼠标悬浮到正中的Hello,Bolt!文本时,字体变为带下划线的粗体,鼠标变为手型,移出时变回初始的字体和鼠标图案;界面中多了一个关机图标,点击时弹出对话框;点击关闭按钮后,程序退出。               在HelloBolt3中,我们已经通过在布局

wdt3385的专栏 1371

MFC对话框开发:控件变量绑定与数据交换机制详解

在桌面应用开发中,对话框作为核心交互界面,其功能实现依赖于控件与后台数据的有效连接。MFC框架通过数据交换(DDX)和验证(DDV)机制,为控件与变量之间建立了双向数据绑定通道。这一机制的核心价值在于实现了界面与逻辑的分离,开发者可以通过值变量直接操作控件所代表的数据,同时利用控件变量动态管理界面状态。在实际工程中,这种模式广泛应用于表单数据采集、参数配置、用户输入验证等场景。本文聚焦于MFC对话框开发中的控件变量绑定,深入解析如何通过类向导为控件添加成员变量,并探讨DDX/DDV机制在数据流转与验证中的具

weixin_33674976的博客 403

VC学习笔记:对话框

VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date:Oct.31th 2010 HQU 重新翻阅整理 //说明:孙鑫视频学习笔记 SkySeraph NOV.11st 2009 HQU /*【对话框专题知识】*/ //知识点:创建对话框;显示...

weixin_30888707的博客 91
上一篇: VC++实现锁定键盘、鼠标操作
下一篇: vc模仿按键
荆楚闲人
博客等级 码龄20年 3万+粉丝 473原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值