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非模态对话框中屏蔽ESC键
个人的编程经验认为:对于非模态对话框,按下ESC键和点击红叉都会响应OnCancel()函数,而不会去响应OnClose()函数. 我们都知道,如果想屏蔽Enter键,只须重写OnOK()函数即可(重 ...
- MFC非模态对话框销毁
非模态对话框需要重载OnCanel方法, 并调用DestroyWindow, 且不能调用基类的OnCanel重载PostNcDestroy, 需要delete掉this指针 // Overrides ...
- objectarx MFC 非模态对话框为当前焦点
dialog.h afx_msg LRESULT OnAcadKeepFocus(WPARAM, LPARAM); dialog.cpp BEGIN_MESSAGE_MAP(CTextDialog, ...
- MFC编程 | 非模态对话框的定义
因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // 非模态对话框的定义 // 通过单文档菜单调用一个非模态窗口 1.首先在工程里插入一个对话框(如:IDD_DLG_TEST ...
- MFC编程入门之十二(对话框:非模态对话框的创建及显示)
上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 非模态对话框显示后,程序其他窗口仍然能正常运行,可以响应用户输入,还可以相互切换.上一讲中创建的Tip模态对话框 ...
- VS2010/MFC对话框:非模态对话框的创建及显示
非模态对话框的创建及显示 上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切 ...
- MFC中模态对话框和非模态对话框的差别
在MFC中有模态对话框和非模态对话框,那这两种有什么差别呢. 又都是用于什么场合呢. 首先,要弄清楚2种对话框是怎样创建的. 然后要弄清楚2种对话框有什么差别,可能从表面上看,模态会堵塞主对话框.可原 ...
- MFC模态和非模态对话框编程
MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程 ...
- VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)
上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...
随机推荐
- Uva 10480 Sabotage 最大流
表示自从学了网络流,就基本上是一直用dinic 这个题一看就是用最大流,作为常识,两个点之间的最大流等于最小割 但是这个题需要输出割边,然后我就不会了,dinic判流量我觉得也可做,但是一直wa 然后 ...
- 未能加载文件或程序集“WcfService”或它的某一个依赖项。试图加载格式不正确的程序。
“/”应用程序中的服务器错误. 未能加载文件或程序集“WcfService”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息, ...
- 一键生成HTML4和WAP站
前两天在QQ空间上提到微信上线风铃时,把其中的HTML5错打成HTML4,结果发现很多媒体微博照着转载,依旧说成 "一键生成HTML4和WAP站",这就是转载不注明出处.不署名.不 ...
- cocos2d-x在NDK r9下的编译问题
:69: error: format not a string literal andno format arguments [-Werror=format-security]cc1plus.exe: ...
- HDU-1402 A * B Problem Plus FFT(快速傅立叶变化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 一般的的大数乘法都是直接模拟乘法演算过程,复杂度O(n^2),对于这题来说会超时.乘法的过程基本 ...
- 安装ADT
ubuntu下安装android开发环境. 打开eclipse,help---install new software,安装adt,一直提示无法连接到dl-ssl.google.com 由https改 ...
- [iOS基础控件 - 3.1] QQ登陆界面
A.storyboard 控件版 1.label 2.textfield a.Keyboard Type 账号:Number Pad 密码:Num ...
- ModSecurity for Nginx
Announcing the availability of ModSecurity extension for Nginx ModSecurity for Nginx ModSecurity for ...
- python ssh弱口令爆破多线程脚本及遇到的一些错误与问题
练习写了个SSH弱口令爆破多线程脚本,遇到的问题 1.一开始想import pexpect 中的pxssh 然而却一直该有错误, ImportError: cannot import name spa ...
- iOS sharedSDK详解
1,系统自带的分享 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ if (! ...