视频教程:模态与非模态对话框1
模态对话框:子窗口关闭之前,不能对父窗口操作
非模态对话框:子窗口关闭之前,可以对父窗口操作
插入一个对话框:
资源视图--->右击--->
进行类的绑定:(给添加的对话框定义类名:创建了一个类)
右击对话框--->添加类--->
多出了一个头文件--->
创建模态对话框:
在工程cpp中添加刚才的头文件 #include "Cmydialog.h"
在需要弹出对话框的按钮中写:
Cmydialog dlg;//创建一个对话框对象
dlg.DoModal();//弹出模态对话框,并等待用户的操作
创建非模态对话框:
Cmydialog dlg;//创建一个对话框对象
dlg.Create(IDD_DIALOG1, this);//创建一个非模态对话框,但不显示
//参数1 子窗口的ID
//参数2 父窗口句柄,可以为NULL
dlg.ShowWindow(SW_SHOW);//显示窗口,并继续往下执行,不会等待用户的操作
上面显示的非模态对话框会一闪而过,原因dlg的作用域只在按钮范围内
解决的办法:方法1.把对象申请为全局变量
方法2.指针法(new)
Cmydialog *p=new Cmydialog();
p->Create(IDD_DIALOG1, this);//创建一个非模态对话框,但不显示
//参数1 子窗口的ID
//参数2 父窗口句柄,可以为NULL
p->ShowWindow(SW_SHOW);//显示窗口,并继续往下执行,不会等待用户的操作