MFC应用模态对话框和非模态对话框

关于对话框呢
第一个了解的就是模态对话框和非模态对话框
定义的话:
1.模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。
2.非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。

二者的类都派生于CDialog类,而CDialog类派生于CWnd类。
在这里插入图片描述
还是用例子来说明,二者的区别,并且复习一下对话框的使用方法
首先呢,还是创建工程,选择基于对话框创建
在这里插入图片描述
在资源视图找到这个Diolog文件夹双击第二个;把默认的控件删除,就变成了这个样子
在这里插入图片描述
然后在左侧找工具箱把他打开
向这个白版里面拖进来两个button空间,并且给他名字改了(单机打字就可以改名字)

在这里插入图片描述
现在的话,我想实现出,我点击左边的按钮,会弹出一个模态对话框;
点击右边的按钮,会弹出一个非模态对话框;
那既然这样我们一定需要再添加两个对话框,在哪添加呢
在这里插入图片描述
就是在资源视图中的Dialog文件夹,右键选择插入Dialog;(添加两个)
按照上面的方法把这两个对话框相貌改一下;
在这里插入图片描述
在这里插入图片描述
然后准备工作就做好了;
如果我们想要实现出点击右边按钮出现非模态对话框;
第一步:添加类
在新建的非模态对话框的上面右键,选择添加类;
在这里插入图片描述
把类名打好,再点确定就好了;

第二步:加头文件;
在类视图中找到C+工程名+DLG这个文件夹双击;
在这里插入图片描述
首先加上头文件,就是你起的类名.h;
然后在最下面加上代码

private:
	CDlgSHOW dlg;

第三步:加事件处理函数
先在C+工程名+DLG这个文件夹找到OnInitDialog()这个函数;
在这里插入图片描述
双击进入;
在末尾加上一行代码
在这里插入图片描述

dlg.Create(IDD_DIALOG1);

括号里就是你新建的那个非模态对话框的ID,可以自己看一下;
然后在你资源视图找到最开始的那个对话框;
在这里插入图片描述
双击右侧的非模态对话框,就会跳到新建的这个函数里
在这里插入图片描述
在里面加上这一段代码;

dlg2.ShowWindow(SW_SHOWNORMAL);

到此就可以了,这就是非模态对话框的建立;
在这里插入图片描述
然后再说模态对话框,这个要更简单一些;
直接给模态对话框添加类(和刚才一样);
写好名字点击完成后;
在刚才加头文件的地方,再加上这个类的头文件;
然后直接双击最开始的对话框左边的按钮;
跳入新建的函数里面;
在这里插入图片描述
添加这两行代码;

	CDlgEXEC dlg;
	dlg.DoModal();

ok了,到此两种对话框的添加就结束了;
就完全可以调试了;
在这里插入图片描述
OK,结束啦;

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/106688201
今日推荐