MFC动态创建控件的消息处理

MFC学习笔记(五):控件一 CWnd。 阅读详情
前些天有人在论坛里问在动态创建TreeCtrl后怎么响应消息,于是便写了一点自己的心得,现整理如下。

  本例在view中动态创建一个ListCtrl并响应其NM_CLICK消息,先写出动态创建的代码:

??? 新建一SDI工程,给view加上一个成员变量:
?CListCtrl m_list;
??? 在view的OnCreate中创建它:
?if(!m_list.Create(WS_BORDER |WS_CHILD|WS_VISIBLE|LVS_ICON |LVS_AUTOARRANGE|LVS_SHOWSELALWAYS|LVS_EDITLABELS,CRect(10,10,310,210),this,ID_LISTCTRL))
?{
??TRACE0("Failed to create ListCtrl window/n");
??return -1;
?}
?//添加一些项
?CString str;
?for(int i=0;i<10;i++)
?{?
??str.Format("item%d",i);
??m_list.InsertItem(i,str);
?}
??? 其中的ID_LISTCTRL是这个控件的ID,当然你可以直接用数值来表示,但为了程序清淅还是定义一个常量的好,在主菜单View->Resource Symbols弹出的对话框中点击New按钮,在Name下面输入ID_LISTCTRL.

??? 创建完毕,编译链接后就可以运行了,但你怎么点击它都没反应,当然,因为我们还没写消息处理的代码。
  通常做法是手动写消息处理函数及消息映射,至少得三步:1,在头文件中定义消息处理函数的原型,2,在cpp中实现这个函数,3,在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之间写上消息映射。如果是单单处理一个消息的话那还可以忍受,消息一多的话不但麻烦还容易出错。
  
??? 所以我采取下面的方法:
??? 1.打开about对话框资源,放入一个ListCtrl控件到对话框中,并将其ID设为ID_LISTCTRL.
??? 2.Ctrl+W,把Class Name由原来的CAboutDlg改为CxxxView,在左边的Object IDS中选择ID_LISTCTRL,这时右边会出现相应的通知消息,这时就可以跟平常一样双击添加消息映射了.
??? 嘿嘿,是不是跟在对话框里响应控件的消息一样很方便呀.
??? 有一点需要注意,只有当打开你加入控件的那个对话框资源编辑器的时候按Ctrl+W时,Class Wizard中才会出现那个ID_LISTCTRL,还有发行时注意把对话框上的listctrl控件删掉.

MFC控件完全重绘从CWnd开始 导读: 我并不推荐采用自绘的方式去完成一些控件(比如CStatic,CButton,RadioBox,CheckBox等)的美化,而是推荐大家从CWnd入手,把这些基本控件完全重新绘制一遍(当然,有些做的很好的控件还是需要继承来自绘的,比如CListCtrl)。为什么这么做?因为MFC对这些控件的某些操作是隐蔽的,某些限制是我们无法接受的(比如CTabCtrl的头部高度和每个Item的宽度)。我 阅读详情

相关推荐

5 MFC

设置。

史D芬周 576

MFC SDI 向CListView添加数据

1 新建MFC SDI应用程序,View选择基类为CListView void CSDIListViewTestView::OnInitialUpdate() { CListView::OnInitialUpdate(); // TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件, // 从而可以用项填充 ListView。 CListCtrl& list = GetListCtrl(); list.ModifyStyle(0,LVS_REPO.

dxm809的博客 472

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

1、在.h文字中声明控件按钮的ID #define IDC_D_BTN 10000 2、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针) CButton* btn = new CButton[5]; DWORD dwStyle = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON; for(int i = 0; i < 5; i++) { btn[i].Create(_T("动态按钮"), dwStyle,CRec

PJ 1229

VC动态创建控件

VC动态创建控件 2010-12-15 11:09 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。    一、创建动态控件:   为了对照,我们先来看一下静态控件的创建。   放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID

aristolto的专栏 8198

MFC编程指南:Button按钮控件的全面解析与高级应用

本文系统介绍了MFC中Button控件的使用方法与技巧。从基础属性设置(文本修改、ID分配、功能按钮)到动态创建与事件处理,详细讲解了按钮编程的核心内容。文章重点阐述了按钮样式修改方法,包括位图按钮和状态控制,并深入讲解了通过派生CButton类实现自定义绘制的高级技术。最后还介绍了按钮布局技巧,如分组管理和自动布局。全文展现了MFC按钮控件从基础到高级的完整知识体系,为开发者提供了全面的参考指南。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 267

MFC Edit Control控件完全指南:从基础使用到高级定制

本文详细介绍了MFC中EditControl控件的开发与应用。主要内容包括:1)控件变量绑定和数据交换实现方法;2)样式设置与动态修改技巧;3)自定义派生类的开发流程,涵盖消息处理、输入验证和界面美化;4)动态创建与布局管理;5)高级功能如数据格式化、水印效果等。通过大量代码示例,展示了从基础到高级的EditControl开发技术,包括多行编辑、密码框、数字验证等常见场景的实现方法,为MFC开发者提供了全面的参考方案。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 384

MFC---动态生成任意数量的控件并添加消息响应

一、动态生成任意数量的控件以Button为例: DWORD bn_dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_BITMAP;//按钮风格、可贴图风格 for (int i = 0; i &lt; ButtonCount; i++) { //这是动态创建Move to Pos1 Button处 CBu...

一只特立独行的ju的博客 3836

MFC Windows 程序设计[242]之动态创建多样对话框(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。......

hnjzfwy的博客 348

转载 ----MFC动态创建控件的消息处理

MFC动态创建控件的消息处理   前些天有人在论坛里问在动态创建TreeCtrl后怎么响应消息,于是便写了一点自己的心得,现整理如下。   本例在view中动态创建一个ListCtrl并响应其NM_CLICK消息,先写出动态创建的代码:     新建一SDI工程,给view加上一个成员变量: CListCtrl m_list;     在view的OnCreate中创建它: if(

qingchuan2083的专栏 464

VC控件动态添加与删除及消息映射实战指南

在MFC(Microsoft Foundation Classes)开发中,动态控件的创建与管理是构建灵活、可扩展界面的关键技术之一。与静态控件在资源编辑器中预先定义不同,动态控件在运行时根据业务逻辑或用户交互需求动态生成,极大地提升了界面的灵活性和适应性。从应用场景来看,动态控件广泛应用于配置界面、插件系统、数据驱动界面等需要高度定制化UI的项目中。例如,在一个可视化流程编辑器中,用户可随时添加新的输入框或按钮,这就要求程序能够实时创建控件并绑定响应事件。

weixin_35370061的博客 1067

hfss仿真软件入门教程

hfss仿真软件入门教程 1.模型建立 1.1在project种选择insert hfss design 1.2.在hfss-》solution type 中选择modal 1.3.在moderler-》中选择units 设置单温为mm 1.4进行画图操作,这里为提高效率直接导入一个已经画好的cad图。使用modeler-》import 2.设置端口 2.1在更改模型中的材料 选择需要更改材料...

xunshui2007的博客 3万+

MFC动态创建控件的消息处理 (转)

MFC动态创建控件的消息处理 (转)[@more@]MFC动态创建控件的消息处理   前些天有人在论坛里问在动态创建TreeCtrl后怎么响应消息,于是便写了一点自己的心得,现整理如下。   本例在view中动态创建一个Li...

csd3176的博客 88

蛋白组学/磷酸化蛋白组学分析笔记-2

如何校正蛋白丰度?磷酸化组学质谱下机处理。

weixin_43029125的博客 1372

mfc 对话框

1,动态创建按钮 1)增加全局变量 CButton m_btn; 2)在需要创建的地方//ID号123可以随意改变 if(!m_btn.m_hWnd)//通过使用窗口句柄来判断这个按钮是否已经被建立      m_hWnd是CWnd的一个成员变量,是专门用来处理窗口消息的。        m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_V

guanyudatou的专栏 974

知识图谱中的 Ontology(本体论)

本文的部分图片和内容来自中国科学院自动化研究所刘康老师的课件 Ontology(本体论) Ontology 是(特定领域)信息组织的一种形式,是领域知识规范的抽象和描述,是表达、共享、重用知识的方法。 Ontology 是知识体系构建的关键技术,知识图谱是一种人工智能技术,它的关键在于让计算机能够处理人类的知识。然而,人类脑海中的知识通常是直觉性的,我们无法将这种直觉性的知识直接输入给计算机,On...

P01son的博客 2万+

Android真机调试——ADB调试(含华为手机无法找到设备)

本文以Huawei Nova7为例。

lianqi2003的博客 7857

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

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

Qsir的专栏 2426

AI原生SaaS应用的自动化运维体系构建

随着ChatGPT掀起的AI原生应用浪潮,越来越多SaaS(软件即服务)产品开始以"AI优先"的方式设计——从用户交互到核心功能,都深度依赖机器学习模型(如推荐算法、智能客服)、实时数据流(如用户行为分析)和弹性算力(如大模型推理)。这类应用的运维需求与传统SaaS完全不同:传统运维像"修水管",哪里漏了补哪里;AI原生运维则像"照顾会成长的宠物",需要实时感知模型状态、数据变化和流量波动,主动调整资源。

AI天才研究院 1080

动态生成控件的消息处理

 动态生成控件的消息处理www.diybl.com 时间:2008-04-26 作者:佚名 编辑:本站 点击: 159 [评论]今天用MFC做了一个动太生成控件的小程序,有关生成的控件在网上查了一些资源,在这里整理一下首先生成控件(这里以CButtonST为例,其它类似): //生成按钮void CdlgDlg::OnBnClickedButton2()...{    // TOD

迷茫的小莱 1126

新手友好!C#上位机调用YOLO实现设备异常检测(详细步骤,附踩坑指南)

C#上位机调用YOLO实现设备异常检测,核心是把“工控交互”和“AI检测”的优势结合起来,新手不用追求一步到位,先跑通基础流程,再逐步优化性能和功能。我当初也是从踩坑中过来的,只要把核心链路和细节摸透,其实门槛并没有想象中高。如果你们在实操中遇到了具体问题(比如相机取流卡顿、模型推理报错),可以在评论区留言,后续我也可以针对性拆解具体模块的完整代码。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 666

Python经典编程习题100例:第32例:相反顺序输出列表

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 按相反的顺序输出列表的值。 解题思路: > 利用reverse函数逆序 代码: arr=['f','g','e','b'] print(arr) arr.reverse() print(arr) ...

优快云 精品推荐 1416

MFC 动态创建对话框和控件

一段时间以来,都在思考不采用Qt,用Win32-API或者MFC实现的程序使界面可配置。即先配置好需要什么对话框、包含什么控件、完成什么任务,然后运行时创建,用以实现界面和功能的分离。需要可以动态配置控件创建、消息接收函数。之前准备的本文博客草稿标题本来是“基于纯GDI的对话框实现”,内容关键字为:“使用GDI绘制对话框、实现按键消息   动态定制  实现 功能和界面的分离  状态机”。

lonelyrains的专栏 9292

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2203

告别拖拽!用代码在MFC对话框里动态创建控件(附静态文本框、编辑框等完整示例)

本文详细介绍了在MFC对话框中通过代码动态创建控件的方法,包括静态文本框、编辑框、下拉框等常用控件的完整示例。通过动态创建控件,开发者可以实现更灵活的界面布局,适应运行时数据变化的需求,提升应用程序的交互性和可维护性。

weixin_30509393的博客 327

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MFC Button 控件完全指南:从基础到进阶

本文全面介绍了MFC中Button控件的使用方法,涵盖创建方式(可视化编辑器和动态代码创建)、常用属性配置、消息处理机制(特别是BN_CLICKED点击事件)以及进阶功能(复选框/单选按钮状态管理、自定义外观)。文章详细讲解了通过类向导添加消息处理、动态创建按钮的注意事项,并针对常见问题提供了排查方法。最后强调了Button作为基础交互控件的重要性,建议开发者通过实践练习掌握标准按钮、复选框、单选按钮的使用,并尝试自定义外观功能。

code_pranger的博客 1147

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 屏蔽CHtmlView/WebBrower控件右键菜单技巧合集
下一篇: 在应用程序中集成外壳的上下文菜单
_foo
博客等级 码龄23年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值