模态对话框和非模态对话框的区别?
模态对话框(modal):就是对话框出现后除了这个对话框外其他的东西不能点击
非模态对话框(modaless): 就是当非模态对话框打开后还可以点击对话框以外的内容。
无论哪一种对话框显示前 必须先定义类
如果我们定义了两个对话框类 第一个dlg1 dlg2我们先
我们现在想要做的是 让dlg1 是模态显示 dlg2非模态显示,ID为 ID_Modaless
在消息响应函数里面添加下面的代码,
在此还需要做的就是在 消息响应函数的开头添加 #include "dlg1.h" 和#include "dlg2.h"
//显示modal模式
dlg1 mydlg1 ;//我们先建一个 dlg1的对象mydlg1
mydlg1.DoModal(); //以modal方式显示
//显示modaless
dlg2 *mydlg2= new dlg2;
mydlg2->Creat(ID_Modaless);
mydlg2->ShowWindow(SW_SHOW);
需要注意的是
1、这里面是运用指针的方式显示的非模态对话框生命周期是整个程序的周期 然而当我们这个消息函数结束后这个指针也没有了,
这样这块地址我们就不能做其他用了
2、非模态对话框点击OK后窗口只是隐藏 而不是销毁,这里面我们可以调用OnOK函数 销毁。