模式对话框:当对话框弹出后,无法操作其父窗口或者上一级窗口,直到关闭该对话框为止。
在主对话框关联类A的情况下,模式对话框创建步骤:
- 新插入一个对话框资源,并添加所需控件
- 对新对话框生成新的对话框类B
- 对主对话框中的控件建立消息映射函数
- 在该消息映射函数中创建对话框类B的对象,如
B dlg;
dlg.DoModal();
模式对话框的特点:
- 在关闭模式对话框前,无法操作背景窗口,除非本身就是背景窗口。
- 使用Dialog::DoModal函数弹出模式对话框,该函数执行过程是阻塞函数。因此,在栈内或堆内申请对话框类的对象都可以,申请栈内变量开发和运行效率较高。
非模式对话框:当对话框弹出后,不影响对它的父窗口或者上一级窗口操作。
在主对话框关联类A的情况下,非模式对话框创建步骤:
- 新插入一个对话框资源,并添加所需控件
- 对新对话框生成新的对话框类C
- 对主对话框中的控件建立消息映射函数
- 在该消息映射函数中创建对话框类C的对象指针,如