mfc模态对话框

时间:2023-01-01 00:18:48

Mfc模态对话框:

 

创建模态对话框:

【模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作】

 

例如:

我们创建一个加法计算器。点击计算之后,弹出一个对话框,当用户点击完确定之后。才进行计算,如果点击取消,则不进行计算。

mfc模态对话框

把上次那个反复敲几遍就会啦,我本身也是边做博客边在背。写过一遍,就是比较有作用。

 

我懒了,就按照上一讲制作的东西接着往下写了。


以下正文:

一、界面部分

经常从下面这四个选项卡来回点点,要不每次我说的是啥你都不知道,,,开始我也不敢点。。。笑哭。。。

mfc模态对话框

右键Dialog

mfc模态对话框

点击插入

2

mfc模态对话框

发现两点变化:

1、多出了一个东西,那必须是我们要求创建的对话框了

2、主要操作界面里面也出了新的对话框界面。

/*bug2:继昨天的改名风波之后。【不改名,就添加不了变量】这个作为一个提示对话框玲珑一些会比较好。所以我们选中它把它变小。从图像界面的右下角点击那个小黑点儿,往左上方拖拽。

mfc模态对话框

发现确定没了,然后后来程序的运行就比较诡异了,各种东西的操作也不听使唤了。所以跟紧我。然后如果在看博客运行的同时发现了问题,欢迎评论讨论。

*/

3、先把确定按钮,往左上方,放放省的被挤没了。

1)点击确定按钮,进行拖拽。

mfc模态对话框

2)然后同时进行其他控件的调整。

mfc模态对话框

3、添加一个静态文本进行提示:是否要进行计算呢?【这个上一讲说过啦,就不再写了】

mfc模态对话框

4、界面就好啦。

 

二、代码链接

mfc模态对话框

弹出对话框后,如此点击:

mfc模态对话框

给一个类名,这个名字的来源:c应该是取class的意思,tip提示嘛,dlg对话框的简写。

人品爆了。。。笑哭

mfc模态对话框

之前创建之后,在这个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);

}

 

 

三、运行与结果:

mfc模态对话框

除了这个框框:

mfc模态对话框

点击取消:

mfc模态对话框

不会计算。

点击确定

mfc模态对话框

完成计算。

 

证明这是个模态窗口,在点击完运算之后,随意的点击这个对话框上面的其他内容,可以看看是不是有响应。

 

下面一讲将介绍,非模态窗口,就是当前对话框它弹它的,后面的内容可以继续执行,要怎么做。