模态对话框:
(1)找到视图,添加一个“对话框”资源作为模态对话框(即:插入 Dialog(E));
(2)再给该模态对话框资源在添加类,类名为CTipDlg。
        右键新加入的对话框,添加类,输入类名CTipDlg再点击确定。
(3)再将模态对话框的头文件#include"CTipDlg.h"添加到当前项目“项目名Dlg.Cpp” 中去。
注:添加头文件的位置应该在原本头文件的下面。
---------------------------------------------------------------------------------------------
(4)双击“打开模态对话框”按钮,进入事件处理函数,添加下面的代码,用来调用模态对话框。
    INT_PTR nRes;             // 用于保存DoModal函数的返回值
    CTipDlg tipDlg;  //定义一个模态对话框的对象
    nRes = tipDlg.DoModal();  // 弹出该模态对话框
    if (IDCANCEL == nRes)     // 判断对话框退出后返回值是否为IDCANCEL
        return;
(5)给模态对话框中添加控件以及代码

========================================================================================

非模态对话框:(1)必须声明一个指向CTipDlg类的指针变量
(2)需要显示的调用ShowWindow()才能将对话框显示出来。步 骤
1、添加一个“对话框”资源作为非模态对话框;再给该对话框资源在添加类,类名为CTipDlg ;
2、处理____Dlg.h头文件:
①在____Dlg.h中加上#include"TipDlg.h"
(注:此处和模态对话框不同)
②在____Dlg.h中为____Dlg类添加private成员变量即:CTipDlg  *m_pTipDlg;
③在____Dlg类的构造函数中初始化成员变量m_pTipDlg。即: 在构造函数体中添加m_pTipDlg = NULL;
3、双击按钮,添加按键处理事件,代码如下:if (NULL == m_pTipDlg)// 如果指针变量m_pTipDlg的值为NULL,则对话框还未创建,需要动态创建      {   // 创建非模态对话框实例   m_pTipDlg = new CTipDlg();   //【注】 此处new,必须在析构函数中delete释放m_pTipDlg->Create(IDD_TIP_DIALOG, this); //注:IDD_TIP_DIALOG应改成对话框二的ID}   m_pTipDlg->ShowWindow(SW_SHOW); // 显示非模态对话框
4、定义析构函数进行手动删除new出来的非模态对话框。
①先在_____Dlg.h文件中为C____Dlg添加析构函数声明:~C_____Dlg();
②然后在_____Dlg.cpp文件中添加析构函数的实现,函数体如下:
注:此处的下划线填写工程的名称(而不是非模态对话框类的名称)!
C____Dlg::~C_____Dlg()
{   // 如果非模态对话框已经创建则删除它   if (NULL != m_pTipDlg)   {   // 删除非模态对话框对象   delete m_pTipDlg;   }
}
执行结果图:

有两种创建方法:
(1)    采用局部变量创建一个非模态对话框
双击按钮,添加下面的代码CTestDialog *pTD = new CTestDialog();pTD->Create(IDD_DIALOG1); //创建一个非模态对话框pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框      因为指针在声明的时候是被放在堆栈中,只有整个应用程序关闭后才会被销毁,所以可以正常显示对话框。这种方法虽然不影响程序的运行,可是指针pTD所指向的内存却导致不可用,这样的编程很不好。(2)采用成员变量创建一个非模态对话框首先在你所要编写的类的头文件中声明一个指针变量:
private:CTestDialog *pTD;
然后再在相应的CPP文件,在你要创建对话框的位置添加如下代码:
双击按钮,添加下面的代码pTD = new CTestDialog(); //给指针分配内存pTD->Create(IDD_DIALOG1); //创建一个非模态对话框pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框    最后在所在类的析构函数中收回pTD所指向的内存:delete   pTD;
模态对话框嵌套的总思路:先插入一个新的对话框为该对话框修改ID后,添加类此时就可以在对话框上创建控件和消息处理函数了

鸡啄米:模态、非模态对话框相关推荐

  1. 鸡啄米vc++2010系列11(非模态对话框的创建)

    上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...

  2. 鸡啄米vc++2010系列12(属性页对话框)

    前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...

  3. 鸡啄米MFC教程笔记之七:对话框:为控件添加消息处理函数

    MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理.比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等.一 ...

  4. 鸡啄米vc++2010系列7(对话框:创建对话框类和添加控件变量)

    前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下,生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 因为鸡啄米给大家的例程 ...

  5. 鸡啄米vc++2010系列32(标签控件Tab Control 下)

    上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类. 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Con ...

  6. 鸡啄米vc++2010系列2(项目文件分析)

    用应用程序向导生成框架程序后,我们可以在之前设置的Location下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件 ...

  7. c语言类静态数据成员函数,鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员)...

    鸡啄米在上一讲数据和函数中讲到,函数之间共享数据也就是此函数访问彼函数的数据主要是通过局部变量.全局变量.类的数据成员.类的静态成员及友元实现的,前三个已经讲过了,这一讲鸡啄米来讲讲静态成员.静态成员 ...

  8. 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)

    目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...

  9. 鸡啄米:C++编程入门系列之五(运算符和表达式)

    转载自: http://www.jizhuomi.com/software/32.html 上一讲鸡啄米给大家讲了一些数据类型,这一讲主要讲解编程入门知识-运算符和表达式.运算符,顾名思义,就是用于计 ...

  10. 智能车竞赛技术报告 | 智能视觉组 - 大连海事大学 - 菜鸡啄米

    简 介: 本文以十六届恩智浦杯全国大学生智能车竞赛为背景,设计的智能车系统以恩智浦i.MX RT1064微处理器为核心控制单元.通过四个电感检测赛道信息,计算出赛道轨迹.通过1024线带方向的编码器获 ...

最新文章

  1. java继承和多态的实验报告_JAVA,继承和多态实验报告
  2. Android studio 使用NDK工具实现JNI编程
  3. Mahout系列之----共轭梯度预处理
  4. 深度学习《patchGAN》
  5. 杭电 hdu 2019
  6. 报错, liquibase.exception.ValidationFailedException: Validation Failed
  7. FileFilter 遍历某个目录下文件名含有某个字符的文件
  8. 30美元攻陷Intel SGX enclave,Intel 不打算修复
  9. 一:HTML文本编译器 kindeditor-4.1.10 的使用 SpringMVC+jsp的实现
  10. EBS AP 创建会计科目失败
  11. 使PNG图片在IE6下透明(非背景图片)
  12. 【复合五点高斯-勒让德公式】
  13. Android——App版本控制PHP
  14. 记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
  15. UVA - 1471 Defense Lines 贪心+二分
  16. 十岁学python_《黄帝内经·灵枢》
  17. 刘强东继续动刀高管!多名VP被换,年底末位10%淘汰...
  18. 《弃子长安》第五章 杀气惊蝉
  19. Pycharm报错:\Scripts\activate.ps1 cannot be loaded because running scripts is disabled on this system
  20. PyCharm使用技巧:Compare With(文件比较工具)

热门文章

  1. 【算法数据结构Java实现】Java实现单链表
  2. 【Cocosd2d实例教程四】Cocos2d实现人物原地走动
  3. docker for windows could not read CA certificate【转】
  4. java如何消除太多的if else判断?
  5. Core J2EE Patterns - Service Locator--oracle官网
  6. spring beans源码解读之--BeanFactory的注册
  7. 逻辑回归评分卡实现和评估
  8. SpringBoot - 实践阿里巴巴【Manager 层_通用业务处理层】
  9. Apache ZooKeeper - Watch 机制的底层原理
  10. MySQL-索引优化篇(2)_使用索引扫描来优化排序