MFC--非模态对话框的创建

关注微信公众号“二进制小站”~~获取更多分析~~(文末二维码~~)

MFC--非模态对话框的创建_第1张图片

文章转自:http://www.cnblogs.com/letben/p/5328334.html

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

把基本的内容都添加上。

形成这样一个样子:

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

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

MFC--非模态对话框的创建_第2张图片

前期准备:

MFC--非模态对话框的创建_第3张图片

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


一、创建这样一个对话框

MFC--非模态对话框的创建_第4张图片

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

MFC--非模态对话框的创建_第5张图片

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

 

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

MFC--非模态对话框的创建_第6张图片

这样起了一个名字:

MFC--非模态对话框的创建_第7张图片

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

/*

MFC--非模态对话框的创建_第8张图片

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

*/

 

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

 

我们应该如何操作呢?

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

 

具体:

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

#include “ImmodelDlg.h”

CImmodelDlg *m_pimmodelDlg;

MFC--非模态对话框的创建_第9张图片

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

MFC--非模态对话框的创建_第10张图片

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

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

 

3、就可以去界面显示了

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

 

if (m_pimmodelDlg == NULL){//判定对话框是否有所指向

m_pimmodelDlg = new CImmodelDlg();//指向一个非模对话框示例

m_pimmodelDlg->Create(IDD_DIALOG1, this);//创建

}

m_pimmodelDlg->ShowWindow(SW_SHOW);//显示

如图:

MFC--非模态对话框的创建_第11张图片

运行效果:

MFC--非模态对话框的创建_第12张图片

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

 

这很重要。

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

CMFC非模态窗口Dlg::~CMFC非模态窗口Dlg(){

if (m_pimmodelDlg != NULL){

delete m_pimmodelDlg;

m_pimmodelDlg = NULL;

}

 

}

如图:

MFC--非模态对话框的创建_第13张图片

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

 

你可能感兴趣的:(MFC)