您的位置:首页 > 其它

对话框程序:模式和非模式

2016-05-09 21:06 183 查看

模式对话框:当对话框弹出后,无法操作其父窗口或者上一级窗口,直到关闭该对话框为止。

在主对话框关联类A的情况下,模式对话框创建步骤:

新插入一个对话框资源,并添加所需控件

对新对话框生成新的对话框类B

对主对话框中的控件建立消息映射函数

在该消息映射函数中创建对话框类B的对象,如

B dlg;
dlg.DoModal();


模式对话框的特点:

在关闭模式对话框前,无法操作背景窗口,除非本身就是背景窗口。

使用Dialog::DoModal函数弹出模式对话框,该函数执行过程是阻塞函数。因此,在栈内或堆内申请对话框类的对象都可以,申请栈内变量开发和运行效率较高。

非模式对话框:当对话框弹出后,不影响对它的父窗口或者上一级窗口操作。

在主对话框关联类A的情况下,非模式对话框创建步骤:

新插入一个对话框资源,并添加所需控件

对新对话框生成新的对话框类C

对主对话框中的控件建立消息映射函数

在该消息映射函数中创建对话框类C的对象指针,如

C* pDlg = new C;
pDlg->Create(IDD_TEST);
pDlg->ShowWindow(SW_SHOW);


非模式对话框的特点:

在关闭非模式对话框前,不影响对背景窗口的操作。

使用Dialog::Create函数创建非模式对话框,该函数是非阻塞函数。因此,必须在堆内申请对话框资源,不能再栈内申请临时对象,因为临时对象在离开函数体时会自动销毁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对话框 MFC