MFC子对话框初始化问题_从一个“断言”报警说起
1.问题描述
在进行MFC开发时,希望将界面变得美观。因而调整了一下对话框上的字体与颜色。如果仅有一个对话框,那么直接把这些初始化的代码放到OnInitDialog()函数中就好。然而,我们会发现,利用MFC自动搭建的子对话框类包含的函数非常稀少!下面记录一下,我的思路例程:字体代码如下:font.CreatePointFont(150,"宋体");//选择字体 GetDlgItem(IDC_M1_STATIC_ORIG)->SetFont(&font); GetDlgItem(IDC_M1_STATIC_FFT)->SetFont(&font); GetDlgItem(IDC_M1_START)->SetFont(&font); GetDlgItem(IDC_M1_END)->SetFont(&font); GetDlgItem(IDC_M1_CANCEL)->SetFont(&font); GetDlgItem(IDC_M1_X2)->SetFont(&font); GetDlgItem(IDC_M1_2)->SetFont(&font); GetDlgItem(IDC_M1_1)->SetFont(&font);
1.1 放在子对话框构造函数中
结果:直接报错!这个原因很好想,子对话框还在生成的过程中,你突然横插一脚,要晚上子对话框面板上的功能,这肯定是不现实的!!!那好,换个地方!!!1.2 重载WM_PAINT消息
这其实也是我的一个小想法,既然不能放在对话框的初始化过程,那好吧~辛苦点,一点点画出来。结果,又报错!这个错比上一个轻点,至少生成了子对话框(!废话!)。这个错在于每次移动子对话框的时候,会报断言错误~~哪里的问题?仔细想想,我们每次移动对话框都会触发WM_PAINT消息,就会触发OnPaint()函数。这就简单了。。。肯定是我们的这几条语句放在OnPaint()函数中不合适,具体就是控件多次动态(WM_PAINT消息)激发是不被允许的。
2.我的解决方案
静一静~Q:我想做什么???A:初始化对话框啊!!!Q:如果仅有一个对话框,我会把这段代码放在哪个位置???A:对话框初始化函数中(OnInitDialog0)啊!!!问题简单了,现在的问题就是子对话框类中没有初始化对话框函数,我们是否能重写一个?对,这个思路是没问题的~OnInitDialog()函数重写:
3.经验总结
这个Bug我调试了将近半天,最大的感受就是要冷静思考。再父对话框中能做的事,在子对话框中是否可以采用相同的方法?到底是涉及到WM消息的重载?还是相关函数的重写(Override)?MFC的设计理念就是傻白甜,所以冷静的想一想,很多细节是完全可以掌握的!
MFC子对话框初始化问题_从一个“断言”报警说起相关推荐
- MFC 子对话框多了任务栏图标?
在编写对话框程序时,增加了个子对话框,想使用主对话框的界面直接拿来修改,于是直接复在左边的资源管视图(ResourceView)里面直接按Ctrl键拖拉复制了一个,更改对话框标题.ID,一切顺利. 但 ...
- MFC 基础知识:主对话框与子对话框(一)
(仅供使用VS MFC初学者学习,高手莫见笑) 在MFC中通常会使用点击一个按钮,弹出一个子对话框的基础知识,这些都是学习MFC的基础知识,也是非常重要的知识,这里我就简单的讲讲这些知识. 一. 设置 ...
- MFC 基础知识:主对话框与子对话框(二)
(仅供使用VS MFC初学者学习,高手莫见笑) 接"MFC 基础知识:主对话框与子对话框(一)"的内容 在"MFC 基础知识:主对话框与子对话框(一)"中Edi ...
- dialog对话框初始化 mfc_MFC添加子对话框及如何初始化
一.建立子对话框 1.建立一个基于对话框的MFC工程 2.在资源视图中右键单击.rc文件,然后选择添加添加资源->Dialog 3.第二步新建的Dialog对话框中默认的会有确认和取消两个按钮( ...
- MFC TabControl插件 子对话框调用主对话框功能函数和变量
前言 在子对话框中调用主对话框的功能函数和变量的方法,大多都是通过获取主对话框指针实现的. 一.创建TabControl控件和子对话框 链接: HisinWang写的MFC:TabCtrl使用教程 二 ...
- MFC Windows 程序设计[五十六]之开启子对话框(附源码)
MFC Windows 程序设计[五十六]之开启子对话框 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries), ...
- 《MFC如何添加子对话框》
问题描述 当MFC应用程序的主对话框有其他功能需要,但不能显示在主对话框时,通常会通过点击一个功能按钮弹出一个字对话框来实现.最常见的就是登录界面,点击登录按钮,然后弹出一个登录对话框让你输入登录信息 ...
- MFC中如何给子对话框添加图标
1.先打开类向导为子对话框添加OnInitDialog()成员虚函数 2.子对话框属性中选中style->Title bar改为true 3.导入对应的图标到文件中: 4.在子对话框OnInit ...
- C++MFC基于对话框的编程——模态(非模态)对话框
目录 一.添加MFC功能 二.创建基于MFC的应用程序框架 三.初识界面 四.上案例 1.拖控件button(两个) 2.改控件名字 2.1改名方法1 2.2改名方法2 3.添加两个新的对话框(Dia ...
最新文章
- ICLR 2021论文接收统计出炉!Top20 机构,国内仅清华在榜!
- MongoDB操作命令
- shiro +spring + spring mvc+ mybatis整合【转】
- startindex 不能大于字符串长度_「12」学习MySQL第二类函数:字符串函数
- 用GDB排查Python程序故障
- Pytorch——把Numpy转化为Torch
- Python基础学习(二)
- NumPy学习笔记之argsort()函数
- win10找回windows照片查看器的方法
- 大数据技术之Hadoop(入门)
- IDEA 不检查语法错误问题
- 微信支付 unmatched order appid and payment appid
- 编程中的源代码是什么?
- 基于Levy飞行和FDB的郊狼优化算法(matlab代码实现)
- 使用 Apple Watch S6 测量血氧教程
- 语法分析器(c++)
- shell eval
- 阿里巴巴真的会收购雅虎吗?
- python kil 掉子进程
- java 傅里叶变换 频谱_傅里叶变换分析频谱(FFT)