MFC动态创建控件并响应事件代码实现过程
MFC动态创建控件以及响应动态创建的控件的事件的实现方法如下。
1.创建对象
用new进行动态创建一个对象。然后调用Create函数创建窗口,在函数的父窗口参数中传入this或者用AfxGetMainWnd()获取的父窗口对象指针。最后一个窗口ID先自定义一个ID名。
2.定义ID宏
在cpp文件中,定一个创建对象时自定义的ID的宏,给予一个数字,不要和系统资源的ID值重复。如#define ID_DY_OK 10000
3.消息映射
在VS2010中的cpp文件中的BEGIN_MESSAGE_MAP之间写上映射语句。可以参照静态生成的消息映射写。括号内第一个写上自定义的ID名,后面写上响应的函数地址,以&取地址,&后面紧跟函数名,函数名需要写清楚所属类。因此,一个类中的消息可以在另外一个类中进行处理,只要消息映射写上要处理消息的类名以及函数名,并在处理消息的类中进行消息处理函数的声明。
而在VC6.0中,在//{{AFX_MSG_MAP()中间是类向导自动生成的,里面的消息处理都是静态的控件的消息处理。如果要进行动态控件的消息处理,则要将消息映射写在END_MESSAGE_MAP()之间的//}}AFX_MSG_MAP之后的中间区域。消息映射的括号内的第二个参数只写函数名即可。当然,此时的函数是本类中的,这是默认的情况。不需要写&取址符,函数名就表示函数地址。如果要用其他类中的函数进行处理,则只需要加上类名作用域解析操作符和响应的函数名即可。
4.消息声明
在头文件中,声明消息处理函数。函数的声明和普通的函数声明一样,此外,还要在声明前面加上afx_msg作为消息响应函数的声明标志。
5.消息处理
在cpp文件中,和普通函数一样处理函数定义,函数可以有参数也可以没有参数,如果有参数,参考静态控件消息处理函数的参数样式写和处理。
当然,有一个比较快速的方法就是,动态创建好控件后,然后用向导创建静态的控件的消息处理,然后将动态创建的控件ID值和静态的设置成一样的,然后删掉静态控件。如果是VC6.0则要将消息映射拿到//{{AFX_MSG_MAP()之外END_MESSAGE_MAP()之前即可。但是建议用上面的手动添加,灵活且能够深刻理解消息处理机制。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。MFC动态创建控件以及响应动态创建的控件的事件的实现方法和原理。
MFC动态创建控件并响应事件代码实现过程相关推荐
- MFC中动态创建控件以及添加事件响应
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建控件以及事件响应实现方法
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC vc++ 中CTreeContrl如何自定义实现鼠标单击或双击响应事件 ,即重写类似于控件的响应事件或消息
代码部分摘录自"天上的猩猩的专栏":https://blog.csdn.net/qq_23992597/article/details/51006920#commentsedit ...
- 在.NET上如何根据字符串动态创建控件
在.Net上用字符串动态创建控件是通过反射来实现. 首先,利用System.Type.GetType方法,获得字符串中指定的控件的类型实例. 这里需要注意这个字符串的语法,根据msdn的解释: 按名称 ...
- ASP.NET动态创建控件之绝境求生
来源:中国IT实验室 在ASP.NET中动态创建一个控件总是不那么顺利,特别是当对页面的Life Cycle不是那么了然的情况下!这里简单描述一下要求,然后提供一个解决方案,大家看看有没有更好的Ide ...
- C++ Builder 动态创建控件
当开发类似解释程序或实现可视化操作功能等一类的应用程序时,都需要动态地创建控件(对象),而且还要为这些控件添加适当的事件处理程序,下面将介绍在C++Builder中如何实现基本的实现框架. 动态创建控 ...
- asp.net 包含动态创建控件的容器如果要切换显示/隐藏不要用 Visible 属性
asp.net 包含动态创建控件的容器如果要切换显示/隐藏不要用 Visible 属性 就是不用 XXX.Visible = false; // true 因为这样该容器及其子控件会彻底的从页面上消 ...
- C# 动态创建控件时注册Name属性
动态创建控件 1. 容器控件 .RegisterName("Name",要注册的控件) //注册控件 2. 容器控件 .FindName("Name") a ...
- Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
Android 屏幕适配攻略(五)动态创建控件并设置控件的大小 题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频 ...
最新文章
- Oracle Ora 错误解决方案合集
- 《图解HTTP》读书笔记(四:HTTP方法)
- cxGrid 使用指南 1
- yum php devel_yum源里找不到 php54w-devel,求可用yum源
- ionic 状态栏显示异常 statusBar
- Premiere Pro CC2017教程(一)
- React学习:生命周期、过滤器、event、axios-学习笔记
- 微信小程序----全局变量
- 区域赛铜牌专题(一)
- 最大功率点跟踪_ADI公司推出集成最大功率点跟踪和I2C的80V降压升压电池充电控制器...
- centos右上角wired图标消失有效解决方案【转载】
- java基础案例教程试题,Java基础案例教程-中国大学mooc-试题题目及答案
- 2018-08-13 谷歌 protobuf-lite:3.0.1
- SQL2005学习(三十二),Group by
- 万年历matlab算法,万年历算法(万年历算法和分析)
- 敏捷开发scrum模型
- Spring Aop(十五)——Aop原理之Advised接口
- 使用DW设置网页背景图
- 基于51单片机的硬币电子秤的实现
- mongodb journal占用磁盘处理
热门文章
- Charles学习(三)之使用Map local代理本地静态资源以及配置网页代理在Mac模拟器调试iOS客户端...
- 跟牛牛老师学python自动化的第四天
- SQL语句统计每天、每月、每年的数据
- 新建maven项目更改 web版本
- css中如何修改鼠标光标(指针)的样式和颜色
- Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现
- mongodb在插入数据环节避免数据重复的方法(爬虫中的使用update)
- Winserver-Exception from HRESULT: 0x800A03EC
- html5中高德、腾讯、百度 地图api调起手机app
- LInux下装jdk