C++ 模态与非模态对话框

视频教程:模态与非模态对话框1

模态对话框:子窗口关闭之前,不能对父窗口操作

非模态对话框:子窗口关闭之前,可以对父窗口操作

插入一个对话框:

资源视图--->右击C++ 模态与非模态对话框--->C++ 模态与非模态对话框

进行类的绑定:(给添加的对话框定义类名:创建了一个类)

右击对话框--->添加类--->

C++ 模态与非模态对话框

多出了一个头文件--->C++ 模态与非模态对话框

创建模态对话框:

在工程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);//显示窗口,并继续往下执行,不会等待用户的操作

上一篇:Python编程基础[条件语句if 循环语句 for,while](二)


下一篇:ReentrantLock重入锁详解