Mfc模态对话框:
创建模态对话框:
【模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作】
例如:
我们创建一个加法计算器。点击计算之后,弹出一个对话框,当用户点击完确定之后。才进行计算,如果点击取消,则不进行计算。
把上次那个反复敲几遍就会啦,我本身也是边做博客边在背。写过一遍,就是比较有作用。
我懒了,就按照上一讲制作的东西接着往下写了。
以下正文:
一、界面部分
经常从下面这四个选项卡来回点点,要不每次我说的是啥你都不知道,,,开始我也不敢点。。。笑哭。。。
右键Dialog
点击插入
2、
发现两点变化:
1、多出了一个东西,那必须是我们要求创建的对话框了
2、主要操作界面里面也出了新的对话框界面。
/*bug2:继昨天的改名风波之后。【不改名,就添加不了变量】这个作为一个提示对话框玲珑一些会比较好。所以我们选中它把它变小。从图像界面的右下角点击那个小黑点儿,往左上方拖拽。
发现确定没了,然后后来程序的运行就比较诡异了,各种东西的操作也不听使唤了。所以跟紧我。然后如果在看博客运行的同时发现了问题,欢迎评论讨论。
*/
3、先把确定按钮,往左上方,放放省的被挤没了。
1)点击确定按钮,进行拖拽。
2)然后同时进行其他控件的调整。
3、添加一个静态文本进行提示:是否要进行计算呢?【这个上一讲说过啦,就不再写了】
4、界面就好啦。
二、代码链接
弹出对话框后,如此点击:
给一个类名,这个名字的来源:c应该是取class的意思,tip提示嘛,dlg对话框的简写。
人品爆了。。。笑哭
之前创建之后,在这个IDD_DIALOG1下面都会报错误的。也可能这次着急了没有改id导致没有报错。。。总之这里报错与否都不影响我们继续往下进行。
有了对应的类,接下来,当我们按下按钮。创建该对象的实例,然后得到当前对话框返回的按钮的值,从而决定是否进行操作。
所以,上面这句话就是就是算法了,【我眼中的算法,或许可以写点儿什么,或许10年之后当我再次看到这个博文的时候可能感触又不一样了呢。。。那个时候可以再看看人月神话,一定会有新的领悟。】只是算法很简单。几乎不需要思考,所以不用数学对问题进行处理的算法,就是在拿英文写故事。所以这点上来讲,我们编程确实需要一些英文功夫。
算法的切入点在“当我们按下按钮”。
然后我们要创建 CTipDlg类型的对象,首先要引入这个对象的头文件。
#include "TipDlg.h"
这么一大段话,就是想说,这个包含头文件的操作,应该放在我们双击按钮之后到达的那个cpp文件里面,在当前这篇博客里面他就是MyAdditionComputer.cpp 文件里面。
然后在上次我们写代码的地方继续这样写:
//也就是在这个文件里面,加上包含头文件那句话。
void CMyAdditionComputerDlg::OnBnClickedButton1()
{
INT_PTR nRes;//typedef _W64 int INT_PTR 又把__W64 定义成 _W64...笑哭。。。
CTipDlg tipDlg;//声明一个CTipDlg的对象 tipDlg
nRes = tipDlg.DoModal();//对象创建模型赋给那个整形指针。
if (nRes ==IDCANCEL){//整形指针的结果如果是退出
return;//就返回,对于当前这个按钮按下事件的处理结束。
}
//否则 说明点击的是确定,那么继续往下执行。运算并得到结果。
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);//见名知意,更新数据。不过它到底是什么呢?双击UpdateData这个单词。按下F12
//得到下面这样一个函数
c = a + b;//记得我们之前写的 a 和 b 还有c 嘛,就是他们了,分别指定了int型的变量abc。然后做加法
UpdateData(false);
}
三、运行与结果:
除了这个框框:
点击取消:
不会计算。
点击确定
完成计算。
证明这是个模态窗口,在点击完运算之后,随意的点击这个对话框上面的其他内容,可以看看是不是有响应。
下面一讲将介绍,非模态窗口,就是当前对话框它弹它的,后面的内容可以继续执行,要怎么做。