一、模态对话框(model dialog box)

在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。
点击模态对话框中的OK按钮,模态对话框会被销毁。
创建模态对话框的代码:

//创建一个模态对话框
Z_Dialog dlg;
dlg.DoModal();

其中Z_Dialog 为和对话框资源相关联的对话框类。
可以创建一个布局模态对话框类变量,不用担心它会随着所在函数返回而被销毁。因为DoModal()函数的一个功能是,当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。
DoModal()函数也有显示对话框的功能,所以也无需调用其他函数来显示对话框。

二、非模态对话框

在程序运行的过程中,若出现了非模态对话框,主窗口还可以发送消息。
点击非模态对话框中的OK按钮,非模态对话框没有销毁,只是隐藏了。若想点击OK按钮时,非模态对话框也销毁,那么Z_Dialog类必须重载其基类CDialog的虚函数OnOK(),在此函数里调用DestroyWindow()来销毁此对话框。

首先在你所要编写的类1的头文件中声明一个指针变量:

private:Z_Dialog *m_imModalDlg;

然后在类1的CPP文件中要创建对话框的位置添加如下代码:

//采用成员变量创建一个非模态对话框
m_imModalDlg= new CTestDialog(); //给指针分配内存
m_imModalDlg->Create(IDD_DIALOG); //创建一个非模态对话框,IDD_DIALOG为要创建的对话框的ID
m_imModalDlg->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框

最后在类1的析构函数中释放m_imModalDlg所指向的内存:

delete m_imModalDlg;

MFC模态、非模态对话框相关推荐

  1. MFC的非模态对话框资源管理

    非模态对话框比模态对话框更难使用这是众所周知的,这是由于模态对话框运行时,阻塞了其父窗口的消息循环,使其能自成一派,所以能够怡然自得.但非模态对话框只相当于一个由父窗体创建的一个同级的Hwnd,就像一 ...

  2. Qt5教程(七):模态/非模态对话框

    模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭. 非模态对话框就是在被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 1. ...

  3. mfc messagebox 非模态_進博尋寶記:當進博遇見非遺?愛上中國傳統文化--財經-

    非遺客廳.人民網記者楊迪 攝 人民網上海11月4日電(記者楊迪)在第三屆中國國際進口博覽會新聞中心一側,一間古色古香的"非遺客廳"格外引人注目.現場的工作人員介紹,本屆進博會期間, ...

  4. MFC中的模态对话框与非模态对话框

    模态对话框创建: MyDialog mydlg; mydlg.DoModal() 当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行. 模态对话框的关闭顺序: OnCl ...

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

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

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

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

  7. QT中的模态对话框及非模态对话框

    模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...

  8. java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/GoForwardToStep/arti ...

  9. 模式对话框与非模式对话框的区别

    模式对话框与非模式对话框的区别 模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持 ...

  10. 模式对话框与非模式对话框的区别2

    模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统 ...

最新文章

  1. TweenMax动画库学习(三)
  2. 云炬WEB开发教程2-2 node.js和npm介绍和安装
  3. php跳一跳小游戏,原生JS实现的跳一跳小游戏完整实例
  4. vnc非授权访问漏洞
  5. ipython和anaconda区别_anaconda和python区别
  6. Day12-流Stream
  7. vim粘贴乱码的原因
  8. error: #error This file requires compiler and library support for the ISO C++ 2011 standard.
  9. Server的Transfer和Response的Redirect
  10. controller报错MissingServletRequestParameterException: Required xxx parameter ‘xxx’ is not present
  11. jQuery入门教程
  12. 借助图灵机器人+20行代码实现微信智能聊天
  13. 38、nginx的upstream目前支持的5种方式的分配
  14. python京东笔试题象棋马走到指定位置方法数
  15. 伊诺伊香槟分校计算机世界排名,伊利诺伊大学香槟分校世界排名及专业排名汇总(QS世界大学排名版)...
  16. Linux man中文手册的安装与使用
  17. Ubuntu16.04安装文本标注工具brat
  18. 时域和频域的简单理解
  19. bash shell 数组元素遍历操作 foreach
  20. springboot2+junit5+MockMvc(Mockito)实现对Controller的测试,配置都有,很详细了。

热门文章

  1. 手掌静脉识别——利用深度学习进行ROI的选取
  2. zabbix 微信报警
  3. 关于如何获取复选框选中行的数据
  4. Python中MNE库的脑电地形图绘制
  5. Swift 的类和对象
  6. 腾讯地图SDK距离测量小工具
  7. 深度优先和广度优先算法(例题)
  8. java 修改gps,改机 - 从源码着手任意修改GPS地理位置
  9. 基于springboot的会议室预约管理系统
  10. maven-shade-plugin错误 Cannot find 'resource' in class