MFC编程入门之十二(对话框:非模态对话框的创建及显示)
上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框——非模态对话框的创建及显示。
非模态对话框显示后,程序其他窗口仍然能正常运行,可以响应用户输入,还可以相互切换。上一讲中创建的Tip模态对话框改为非模态对话框,让大家看一下效果。
非模态对话框的对话框资源和对话框类
实际上,模态对话框和非模态对话框在创建对话框资源和生成对话框类上是没有区别的,所以上一讲中创建的IDD_TIP_DIALOG对话框资源和CTipDlg类都不需要修改。
创建及显示非模态对话框的步骤
需要修改的是,对话框类实例的创建和显示,也就是之前在CAdditionDlg::OnBnClickedAddButton()函数体中添加的对话框显示代码。下面是具体步骤:
1、在AdditionDlg.h中包含CTipDlg头文件并定义CTipDlg类型的指针成员变量。详细操作方法是,在AdditionDlg.cpp中删除之前添加的#include "TipDlg.h",而在AdditionDlg.h中添加#include "TipDlg.h",这是因为我们需要在CAdditionDlg.h中定义CTipDlg类型的指针变量,所以需要包含它的头文件;然后在AdditionDlg.h中为CAdditionDlg类添加private成员变量CTipDlg *m_tipDlg。
2、在CAdditionDlg类的构造函数中初始化成员变量m_tipDlg。如果cpp文件中函数太多,我们可以在Class View上半个视图找到CAdditionDlg类,再在下半个视图中找到其构造函数双击,中间客户区域即可马上切到构造函数的实现处。在构造函数体添加m_tipDlg = NULL;这是个好习惯,在任何指针变量使用前都需要初始化,可以避免因误访问重要内存地址而破坏地址的数据。
3、将上一讲中添加的模态对话框显示代码注释或删除掉,添加非模态对话框的创建和显示代码。VC++中注释单行代码使用“//”,注释多行代码可以在需要注释的代码开始处添加“/*”,结束处添加“*/”。修改后的CAdditionDlg::OnBnClickedAddButton()函数如下:
C++代码:
 
4、因为此非模态对话框实力是动态创建的,所以需要手动删除此动态对象来销毁对话框。我们在CAdditionDlg类的析构函数中添加删除代码,但是MFC并没有自动给出析构函数,这时需要我们手动添加,在对话框析构时就会调用我们自定义的析构函数了。在AdditionDlg.h文件中为CAdditionDlg添加析构函数声明:~CAdditionDlg();然后在AdditionDlg.cpp文件中添加析构函数的实现,函数体如下:
C++代码:

这样,非模态对话框创建和显示的代码就添加修改完了。
MFC编程入门之十二(对话框:非模态对话框的创建及显示)的更多相关文章
- VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)
		
上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...
 - VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)
		
上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...
 - VS2010/MFC编程入门之四十二(MFC常用类:CString类)
		
上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类. CString类简介 CString类作为MFC的常用类,当之无愧.可以这样说,只要是从事MFC开发,基 ...
 - VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)
		
前面两节鸡啄米讲了树形控件Tree Control,本节开始讲解标签控件Tab Control,也可以称为选项卡控件. 标签控件简介 标签控件也比较常见.它可以把多个页面集成到一个窗口中,每个页面对应 ...
 - VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
		
上一节中鸡啄米讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObje ...
 - VS2010/MFC编程入门之三十八(状态栏的使用详解)
		
上一节中鸡啄米讲了工具栏的创建.停靠与使用,本节来讲解状态栏的知识. 状态栏简介 状态栏相信大家在很多窗口中都能见到,它总是用来显示各种状态.状态栏实际上也是一个窗口,一般分为几个窗格,每个窗格分别用 ...
 - VS2010/MFC编程入门之三十九(文档、视图和框架:概述)
		
前面几节讲了菜单.工具栏和状态栏的使用,鸡啄米本节开始将为大家讲解文档.视图和框架的知识. 文档.视图和框架简介 在VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)创建的单文档工 ...
 - VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
		
上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...
 - VS2010/MFC编程入门之十六(对话框:消息对话框)
		
前面几节鸡啄米讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消 ...
 
随机推荐
- http-2.4.18 安装
			
编译最新的httpd 2.4.18 编译提示apr版本低于1.4 rpm repo源是1.39的 因此编译apr 下载 apr apr-util apr-iconv [root@ansibl ...
 - Windows Server 2008 R2 辅域控制器如何升级成主域控制器
			
一.实验模拟故障问题: zhuyu公司架设了一台主域控制器和一台辅域控制器,某一天,zhuyu公司的主域控制器系统崩溃,主域控制器系统也进不去. 虽然辅域控制器可以暂时代替主域控制器的普通工作,但是特 ...
 - Cross-site Scripting (XSS) 阅读笔记
			
本文源自 https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 通过阅读和翻译,并按照自己的理解,整理成如下文档. 概述 XSS ...
 - WebViewClient shouldOverrideUrlLoading 常见错误用法
			
需求描述 在使用 WebView 的项目中,一个常见的需求是将页面内的链接跳转限制在 WebView 内,而不是使用外部浏览器打开,但 WebView 的默认行为是将链接点击事件作为 Intent 发 ...
 - IOS 谓词
			
// 谓词 Person *person = [[Person alloc]init]; person.name = @"zhang san"; person.age = 20; ...
 - Java回顾之Spring基础
			
第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...
 - JQuery-Ajax后台提交数据与获取数据
			
function jqajax(){ var urlName = $("#urlName").val(); var urla = $("#url").val() ...
 - WebApi 接口测试工具:WebApiTestClient
			
文章来源:http://www.cnblogs.com/landeanfen/p/5210356.html 一.WebApiTestClient介绍 1.WebApiTestClient组件作用主要有 ...
 - H2.64的远程回放--开篇
			
之前有2周一直在研究H.264的远程回放, 不是本机播放哦. 实现的步骤: 1. 先保证解码H.264 2. H2.64文件的解析, 当然是为了回放的速度 3. H.264帧的传输, 我用的是TCP ...
 - transition、animation在macbook air上图片动画边缘抖动
			
示例: BUG描述: 最近同事一项目中,产品提出在macbook air上,列表图片放大效果边缘出现抖动现象.在retina屏上没有此问题. 调试过程: 1.单独把结构分离.确定是否由其他元素引起. ...