参考博客:

VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)-软件开发-鸡啄米

一、创建模态对话框

1、接着上节中的test02的例子来讲,找到test02.cpp文件,找到函数InitInstance()

然后,因为上节我们实现了个计算的例子,所以这边就看这个计算例子里自动生成的代码,

如下:

Ctest02Dlg dlg; // 定义对话框类Ctest02Dlg的对象dlg  m_pMainWnd = &dlg;  // 将dlg设为主窗口  INT_PTR nResponse = dlg.DoModal();   // 弹出对话框dlg,并将DoModal函数的返回值(退出时点击按钮的ID)赋值给nResponse  if (nResponse == IDOK)  {// TODO: 在此放置处理何时用//  “确定”来关闭对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用//  “取消”来关闭对话框的代码}

2、自定义创建个新的模态对话框界面,实现步骤如下:先进行资源视图找到Dialog,然后插入新的对话框,如下:

3、修改对话框的名字和ID,如下:

4、添加个静态文本,添加效果如下:,更改下Caption

5、选择对话框模板,右键点击,选择添加类,设置类名CTipDlg如下:在解决方案中可以看到,

生成了CTipDlg类的头文件TipDlg.h和源文件TipDlg.cpp

6、开始引入头文件,如下:

7、在OnBnClickedAddButton()函数中进行添加,里面给加数和被加数进行赋值的部位,我就直接跳过了,因为上节有讲,mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量_Littlehero_121的博客-CSDN博客

void Ctest02Dlg::OnBnClickedAddButton()
{// TODO: 在此添加控件通知处理程序代码 INT_PTR nRes;             // 用于保存DoModal函数的返回值   CTipDlg tipDlg;           // 构造对话框类CTipDlg的实例   nRes = tipDlg.DoModal();  // 弹出对话框   if (IDCANCEL == nRes)     // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否则继续向下执行   return;   // 将各控件中的数据保存到相应的变量   UpdateData(TRUE);   // 将被加数和加数的加和赋值给m_editSum   m_editSum = m_editSummand + m_editAddend;   // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   UpdateData(FALSE);
}

最终实现效果如下:

二、非模态对话框,实现效果如下:

1、找到test02Dlg.h文件,然后进行创建个指针对象,构造函数中进行赋值,实现效果如下:

2、删除掉原先:void Ctest02Dlg::OnBnClickedAddButton()中的值,重新输入代码如下:

// TODO: 在此添加控件通知处理程序代码 // 如果指针变量m_pTipDlg的值为NULL,则对话框还未创建,需要动态创建   if (NULL == m_pTipDlg)   {   // 创建非模态对话框实例   m_pTipDlg = new CTipDlg();   m_pTipDlg->Create(IDD_TIP_DIALOG, this);   }   // 显示非模态对话框   m_pTipDlg->ShowWindow(SW_SHOW);   // 将各控件中的数据保存到相应的变量   UpdateData(TRUE);  //此处的TRUE可加可不加,因为默认是TRUE // 将被加数和加数的加和赋值给m_editSum   m_editSum = m_editSummand + m_editAddend;   // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   UpdateData(FALSE);   

3、因为非模态对话框实例是动态创建的,所以需要手动删除此动态对象来销毁对话框,MFC中不会自动添加析构函数,所以这边需要自己手动创建个,析构函数声明:~Ctest02Dlg();

Ctest02Dlg::~Ctest02Dlg()
{// 如果非模态对话框已经创建则删除它   if (NULL != m_pTipDlg)   {   // 删除非模态对话框对象   delete m_pTipDlg;   }
}

4、最终实现效果如下:(标注的对话框可以进行拖动的)

mfc入门基础(六)创建模态对话框与非模态对话框相关推荐

  1. MFC创建模态对话框与非模态对话框 执行顺序

    创建模态对话框 CDialog::DoModal virtual int DoModal(); 返回值: 整数值,指定了传递给CDialog::EndDialog 的nResult参数值.该函数用于关 ...

  2. MFC中模态对话框和非模态对话框的差别

    在MFC中有模态对话框和非模态对话框,那这两种有什么差别呢. 又都是用于什么场合呢. 首先,要弄清楚2种对话框是怎样创建的. 然后要弄清楚2种对话框有什么差别,可能从表面上看,模态会堵塞主对话框.可原 ...

  3. 创建模态对话框和非模态对话框

    MFC新手一枚,还是先从创建对话框开始吧. Windows有两种对话框,模态对话框(Modal Dialogue Box)和非模态对话框(Modeless). 模态对话框(Modal Dialogue ...

  4. C++ MFC深入详解之----模态对话框与非模态对话框

    对话框的种类 有两种类型的对话框:模态( Modal)对话框和非模态( Modeless)对话框 模态对话框 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他 ...

  5. MFC模态对话框和非模态对话框

    下面是一个我的手写的模态对话框和非模态对话框图: 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务.非模态对话框是指当其显示时,允许转而执行程序中其他任务 ...

  6. 一文搞懂如何创建基于对话框的模态对话框和非模态对话框

    Windows应用程序工作的基本流程是从用户那里得到数据,经过相应的处理之后,再把处理结果输出到屏幕.打印机或者其他的输出设备上.那么,应用程序是如何从用户那里得到数据,并且再将修改后的数据显示给用户 ...

  7. MFC中的模态对话框与非模态对话框的消息循环及消息传递问题(都可以通过SendMessage传递消息)

    注意:非模态和模态对话框都有自己的消息响应过程函数WindowPro,只不过他们的调用模态是自己的消息泵,非模态是由父窗体或父窗体的上一级的消息泵来调用.模态对话框和非模态对话框都可以通过SendMe ...

  8. [MFC]模态对话框与非模态对话框

    MFC中有两种类型的对话框: 模态 对话框和非模态 对话框. 模态 对话框是指当其显示时,程序会暂停执行,直到关闭这个 模态 对话框后,才能继续执行程序中其他任务. (如我们常见的"打开文件 ...

  9. 如何创建MFC模式对话框与非模式对话框

    一.什么是模式对话框与非模式对话框: 简单的来说,模式对话框就是一种当子窗口未关闭时父窗口就无法被激活(也就是处于无法操作状态)的一种窗口.非模式对话框就是当子窗口未关闭时,父窗口依然能被操作的一种窗 ...

最新文章

  1. javascript 事件冒泡 和 冒泡事件阻止
  2. win11安装chocolatey软件包管理工具(win版)
  3. 什么样的代码是好代码_什么是好代码?
  4. [你必须知道的.NET]第二十八回:说说Name这回事儿
  5. indesign如何画弧线_【美妆】鼻影怎么画,才能拥有比例完美的鼻子?
  6. linux进程管理内存管理,Linux专业知识四:Linux系统进程管理及查看内存
  7. 唯一的确定一棵二叉树
  8. linux 命令汇总(搜索、fdfs、常用命令),虚拟机dump文件
  9. CSDN 第一篇随笔
  10. uniapp使用企业微信SDK踩坑指南
  11. C语言练习-还原算术表达式
  12. 微型计算机机箱配什么显卡,CPU显卡搭配建议
  13. 【数学之美】分形图形动画演示欣赏
  14. 安卓手机的这几个隐藏功能分享给你
  15. 程序员:写作能收获什么?
  16. JVM垃圾回收系列--垃圾回收器的详解/对比
  17. 编译安装oh-my-zsh
  18. tomcat配置 详解
  19. 对不起 我来晚了 —— Android群英传 出版祭
  20. Java图片截图缩放工具

热门文章

  1. 智慧教室之心理咨询室解决方案[心理健康教育,智慧教室方案]
  2. 微信中关闭网页输入内容时的安全提示 [干掉 “防盗号或诈骗,请不要输入QQ密码”]...
  3. java数字人民币转大写的方法及注意事项
  4. Java 学习 类与对象讲解
  5. mysql count 联表_mysql count 多表联查问题
  6. MyBatis出现“无效列类型1111错误”的解决方案
  7. 检查安装的nvidia显卡驱动版本命令
  8. C语言奇葩之明明找铅笔
  9. 如何找到已提交内存越来越大的原因?
  10. 输入URL之后会执行什么流程?