按照我们的之前的做法,先新建工程。

把基本的内容都添加上。

形成这样一个样子:

并且进行试运行,让程序能够完成加法运算。

值的注意的是,静态文本那里要改一下名字,否则无法将成员变量进行添加。

dialog python 非模态对话框 mfc弹出非模态对话框_模态窗口

前期准备:

dialog python 非模态对话框 mfc弹出非模态对话框_非模态对话框_02

然后就可以开始做我们的非模态对话框了。

一、创建这样一个对话框

dialog python 非模态对话框 mfc弹出非模态对话框_构造函数_03

到资源视图下面的,找到Dialog右击,出现下拉菜单。点击插入Dialog。

dialog python 非模态对话框 mfc弹出非模态对话框_构造函数_04

这步,应该都很熟练,先拖动两个按钮(否则可能会发生问题),然后稍微调整对话框的大小,最后添加一个静态文本。输入一些文字。

 

二、右键当前对话框,然后找到添加类,这个下拉菜单选项。

dialog python 非模态对话框 mfc弹出非模态对话框_模态窗口_05

这样起了一个名字:

dialog python 非模态对话框 mfc弹出非模态对话框_模态窗口_06

C代表类名,immodel大概是非模的意思【笑哭】,dlg对话框。然后点击完成。

/*

dialog python 非模态对话框 mfc弹出非模态对话框_非模态对话框_07

这里就是前面说的有可能会出现问题,不过,这个无关紧要,保存之后,直接进行下一步就可以了。

*/ 

之前我们说,在按钮点下的时候,会触发非模态对话框弹出的事件。 

我们应该如何操作呢?

逻辑:这段代码应该出现在按钮按下的位置,也就是我们曾经书写UpdateData();和c=a+b的地方。在进行计算之前,要弹出对话框。1、创建该类的对象,并显示。这就是算法了。在进行细化:1、创建之前要先询问一下,是不是有必要创建,有的话直接显示,没有在创建并显示。2、为了创建,应该要包含头文件。因为它不属于某个窗体,而是整个进程的。(注意:我们上次创建的模态窗口就只对应那个按钮,所以是局部的。但是我们这次创建的非模窗口是不应该随着响应结束而消亡的。所以他的声明是全局的。所以同时也需要在构造函数进行初始化,在结束时,需要析构)

 具体:

1、在MFC非模态窗口Dlg.h 中添加两行代码:

#include “ImmodelDlg.h”

CImmodelDlg *m_pimmodelDlg;

dialog python 非模态对话框 mfc弹出非模态对话框_模态窗口_08

2、去构造里面初始化他。

dialog python 非模态对话框 mfc弹出非模态对话框_非模态对话框_09

下面留了一段儿紫色的BEGIN_MESSAGE_MAP可能会比较好定位。

总之在构造函数中添加完。 

3、就可以去界面显示了

需要在计算按钮里面添加如下代码: 

if (m_pimmodelDlg == NULL){//判定对话框是否有所指向
m_pimmodelDlg = new CImmodelDlg();//指向一个非模对话框示例
m_pimmodelDlg->Create(IDD_DIALOG1, this);//创建
}
m_pimmodelDlg->ShowWindow(SW_SHOW);//显示

如图:

dialog python 非模态对话框 mfc弹出非模态对话框_非模态对话框_10

运行效果:

dialog python 非模态对话框 mfc弹出非模态对话框_非模态对话框_11

样子是有了,但是需要析构析构!!!

 这很重要。

在这段代码的下面添加如下代码:

CMFC非模态窗口Dlg::~CMFC非模态窗口Dlg(){
if (m_pimmodelDlg != NULL){
delete m_pimmodelDlg;
m_pimmodelDlg = NULL;
}
 
}

如图:

dialog python 非模态对话框 mfc弹出非模态对话框_构造函数_12

如此非模态对话框的创建也完成了。