Windows对话框分为两类:模态对话框和非模态对话框。

模态对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。

非模态对话框,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。

弹出模态对话框

弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。CDialog::DoModal()函数的原型为:

virtual INT_PTR DoModal();   

DoModal是一个函数,可以用来显示一个模态对话框。此成员函数用来显示一个模态对话框。其返回值对应于用来关闭对话框的控件的ID。  此函数返回后,Windows响应这个对话框,所有的属性页都会被销毁。要显示一个非模态对话框,请调用Create来代替此函数。

返回值:如果函数成功则返回IDOK或IDCANCEL;否则返回0或-1。IDOK和IDCANCEL都是常量,它表明用户选择的是OK按钮还是Cancel按钮。

调用了它对话框就会弹出,返回值是退出对话框时所点的按钮的ID,比如,我们点了“退出”按钮,那么DoModal返回值为IDCANCEL。

代码:

首先新建一个dialog,取名为TipDlg,并对该对话框添加新类

 void CTestDlg::OnBnClickedBtnAdd()
{
// TODO: 在此添加控件通知处理程序代码、 //////////////////////////////////////////
INT_PTR nRes; //用于保存DoModal函数的返回值 CTipDlg tipDlg; //构造对话框CTipDlg的实例
nRes=tipDlg.DoModal(); //弹出对话框
if(IDCANCEL==nRes) //判断对话框退出后返回值是否为IDCANCEL,如果是证明选择了退出键返回IDCANCEL,则执行return,否则继续向下执行
return;
/*要执行的代码*/
}

非模态对话框的创建:http://www.jizhuomi.com/software/162.html

CDialog7为新建的对划框类

CDialog7 *dlg7=new CDialog7; //创建非模态对话框实例
dlg7->Create(IDD_DIALOG7,this);
dlg7->ShowWindow(SW_SHOW); //显示非模态对话框*/

模态对话框 DoModal的用法 (vs2008)与非模态对话框的更多相关文章

  1. QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

    QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->ad ...

  2. VC++模态对话框和非模态对话框

    MFC中有两种类型的对话框:模态对话框和非模态对话框.  模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务.非模态对话框是指当其显示时,允许转而执行程序中 ...

  3. VS2010/MFC对话框:非模态对话框的创建及显示

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

  4. MFC模态和非模态对话框编程

    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程 ...

  5. VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)

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

  6. MFC 点击按钮,弹出另一个对话框(模态及非模态对话框)

    1. 模态对话框 资源视图->Dialog->右键->添加资源->新建->对话框->右键->添加类. 例如:在A_dialog中点击按钮弹出B_dialog  ...

  7. 【VS开发】模态对话框和非模态对话框

    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程 ...

  8. VS2010-MFC(对话框:非模态对话框的创建及显示)

    转自:http://www.jizhuomi.com/software/162.html 前面已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.本节会将上一讲中 ...

  9. QT笔记之模态对话框及非模态对话框

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

随机推荐

  1. HDC与CDC相互转换

    转自loop_k原文 HDC与CDC相互转换 概念 首先说一下什么是DC(设备描述表):Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC) ...

  2. 体验Windows 2008 R2的RemoteApp

    [说明]这是<中小企业虚拟机解决方案大全>一书中部分章节的摘抄.该书预计于2009年12月初由<电子工业出版社>出版,敬请期待!   通过远程桌面服务,组织可以为用户提供随时随 ...

  3. google 集群计算的3大基础设施

    1.  GFS  分布式文件系统 2.  map-reduce 分布式计算框架 3. bigtable 海量key-value的存储 (开源实现:Hypertable)

  4. People seldom do what they believe in. They do what is convenient, then repent.

    People seldom do what they believe in. They do what is convenient, then repent. 人们很少真正实践他们的理想.他们只做比较 ...

  5. SQL获取事件探查器保存的跟踪文件

    fn_trace_gettable (Transact-SQL) 以表格格式返回一或多个跟踪文件的内容. Transact-SQL 语法约定 语法 fn_trace_gettable ( filena ...

  6. Java学习之集合

    1.ArrayList:采用数组的形式保存对象,这种方式将对象保存在连续的位置中,所以查询效率比较高,但是插入删除时麻烦,并且ArrayList不是线程安全的. 2.Vector:保存对象的方式与Ar ...

  7. C#json数据的序列化和反序列化(将数据转换为对象或对象集合)

    引用 System.Runtime.Serialization.Json

  8. iOS 7的手势滑动返回

    如今使用默认模板创建的iOS App都支持手势返回功能,假设导航栏的返回button是自己定义的那么则会失效,也能够參考这里手动设置无效. if ([self.navigationController ...

  9. 全局钩子 实例(不使用DLL和使用DLL两种)

    大家应该都知道,全局消息钩子要依赖于一个DLL才能够正常工作.于是呢,我也就理所当在地认为全局钩子都要依赖于一个DLL才能正常工作的,我想大部分人肯定和我一样也这么认为的. 但实际上不是这样的.有某些 ...

  10. MapReduce算法形式五:TOP—N

    案例五:TOP—N 这个问题比较常见,一般都用于求前几个或者后几个的问题,shuffle有一个默认的排序是正序的,但如果需要逆序的并且暂时还不知道如何重写shuffle的排序规则的时候就用以下方法就行 ...