mfc非模态对话框

Posted 木鸟飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc非模态对话框相关的知识,希望对你有一定的参考价值。

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

把基本的内容都添加上。

形成这样一个样子:

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

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

技术分享

前期准备:

技术分享

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


一、创建这样一个对话框

技术分享

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

技术分享

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

 

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

技术分享

这样起了一个名字:

技术分享

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

/*

技术分享

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

*/

 

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

 

我们应该如何操作呢?

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

 

具体:

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

#include “ImmodelDlg.h”

CImmodelDlg *m_pimmodelDlg;

技术分享

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

技术分享

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

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

 

3、就可以去界面显示了

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

 

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

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

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

}

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

如图:

技术分享

运行效果:

技术分享

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

 

这很重要。

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

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

if (m_pimmodelDlg != NULL){

delete m_pimmodelDlg;

m_pimmodelDlg = NULL;

}

 

}

如图:

技术分享

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

 

参考网站:

http://www.jizhuomi.com/school/c/161.html

 

以上是关于mfc非模态对话框的主要内容,如果未能解决你的问题,请参考以下文章

MFC 创建模态与非模态对话框

如何创建一个模态的对话框

MFC编程 | 非模态对话框的定义

mfc非模态对话框

VS2010/MFC编程(对话框:模态对话框及其弹出过程)

VS2017 MFC应用中添加模态对话框时为其添加类弹出如下错误