MFC模态、非模态对话框
一、模态对话框(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模态、非模态对话框相关推荐
- MFC的非模态对话框资源管理
非模态对话框比模态对话框更难使用这是众所周知的,这是由于模态对话框运行时,阻塞了其父窗口的消息循环,使其能自成一派,所以能够怡然自得.但非模态对话框只相当于一个由父窗体创建的一个同级的Hwnd,就像一 ...
- Qt5教程(七):模态/非模态对话框
模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭. 非模态对话框就是在被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 1. ...
- mfc messagebox 非模态_進博尋寶記:當進博遇見非遺?愛上中國傳統文化--財經-
非遺客廳.人民網記者楊迪 攝 人民網上海11月4日電(記者楊迪)在第三屆中國國際進口博覽會新聞中心一側,一間古色古香的"非遺客廳"格外引人注目.現場的工作人員介紹,本屆進博會期間, ...
- MFC中的模态对话框与非模态对话框
模态对话框创建: MyDialog mydlg; mydlg.DoModal() 当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行. 模态对话框的关闭顺序: OnCl ...
- MFC创建模态对话框与非模态对话框 执行顺序
创建模态对话框 CDialog::DoModal virtual int DoModal(); 返回值: 整数值,指定了传递给CDialog::EndDialog 的nResult参数值.该函数用于关 ...
- MFC中的模态对话框与非模态对话框的消息循环及消息传递问题(都可以通过SendMessage传递消息)
注意:非模态和模态对话框都有自己的消息响应过程函数WindowPro,只不过他们的调用模态是自己的消息泵,非模态是由父窗体或父窗体的上一级的消息泵来调用.模态对话框和非模态对话框都可以通过SendMe ...
- QT中的模态对话框及非模态对话框
模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...
- java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/GoForwardToStep/arti ...
- 模式对话框与非模式对话框的区别
模式对话框与非模式对话框的区别 模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持 ...
- 模式对话框与非模式对话框的区别2
模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统 ...
最新文章
- TweenMax动画库学习(三)
- 云炬WEB开发教程2-2 node.js和npm介绍和安装
- php跳一跳小游戏,原生JS实现的跳一跳小游戏完整实例
- vnc非授权访问漏洞
- ipython和anaconda区别_anaconda和python区别
- Day12-流Stream
- vim粘贴乱码的原因
- error: #error This file requires compiler and library support for the ISO C++ 2011 standard.
- Server的Transfer和Response的Redirect
- controller报错MissingServletRequestParameterException: Required xxx parameter ‘xxx’ is not present
- jQuery入门教程
- 借助图灵机器人+20行代码实现微信智能聊天
- 38、nginx的upstream目前支持的5种方式的分配
- python京东笔试题象棋马走到指定位置方法数
- 伊诺伊香槟分校计算机世界排名,伊利诺伊大学香槟分校世界排名及专业排名汇总(QS世界大学排名版)...
- Linux man中文手册的安装与使用
- Ubuntu16.04安装文本标注工具brat
- 时域和频域的简单理解
- bash shell 数组元素遍历操作 foreach
- springboot2+junit5+MockMvc(Mockito)实现对Controller的测试,配置都有,很详细了。