mfc模态对话框
Mfc模态对话框:
创建模态对话框:
【模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作】
例如:
我们创建一个加法计算器。点击计算之后,弹出一个对话框,当用户点击完确定之后。才进行计算,如果点击取消,则不进行计算。
把上次那个反复敲几遍就会啦,我本身也是边做博客边在背。写过一遍,就是比较有作用。
我懒了,就按照上一讲制作的东西接着往下写了。
以下正文:
一、界面部分
经常从下面这四个选项卡来回点点,要不每次我说的是啥你都不知道,,,开始我也不敢点。。。笑哭。。。
右键Dialog
点击插入
2、
发现两点变化:
1、多出了一个东西,那必须是我们要求创建的对话框了
2、主要操作界面里面也出了新的对话框界面。
/*bug2:继昨天的改名风波之后。【不改名,就添加不了变量】这个作为一个提示对话框玲珑一些会比较好。所以我们选中它把它变小。从图像界面的右下角点击那个小黑点儿,往左上方拖拽。
发现确定没了,然后后来程序的运行就比较诡异了,各种东西的操作也不听使唤了。所以跟紧我。然后如果在看博客运行的同时发现了问题,欢迎评论讨论。
*/
3、先把确定按钮,往左上方,放放省的被挤没了。
1)点击确定按钮,进行拖拽。
2)然后同时进行其他控件的调整。
3、添加一个静态文本进行提示:是否要进行计算呢?【这个上一讲说过啦,就不再写了】
4、界面就好啦。
二、代码链接
弹出对话框后,如此点击:
给一个类名,这个名字的来源:c应该是取class的意思,tip提示嘛,dlg对话框的简写。
人品爆了。。。笑哭
之前创建之后,在这个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模态对话框程序不响应OnIdle
从代码分析原因吧: OnIdle函数在MFC的CWinThread::Run函数中被调用,如下 // main running routine until thread exits int CWinT ...
- MFC 模态对话框、非模态对话框
modal dialogs与modeless dialogs,modal dialogs会让原窗体不被选中,modeless dialogs原窗体依然可以选中. 1.模态对话框的显示 DlgModal ...
- 再谈MFC学习——模态对话框的数据传递
学习c++的目的就是为了使用封装好的类.而最最经典的封装类当然是微软的MFC窗体程序类. 学习MFC编程之前要学习c++的主要知识,掌握c++的基本编程思想. 以下就看下我学习的MFC模态对话框的数据 ...
- MFC编程 | 非模态对话框的定义
因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // 非模态对话框的定义 // 通过单文档菜单调用一个非模态窗口 1.首先在工程里插入一个对话框(如:IDD_DLG_TEST ...
- MFC编程入门之十二(对话框:非模态对话框的创建及显示)
上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 非模态对话框显示后,程序其他窗口仍然能正常运行,可以响应用户输入,还可以相互切换.上一讲中创建的Tip模态对话框 ...
- MFC编程入门之十一(对话框:模态对话框及其弹出过程)
加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有了些解了,有个好的开始对于以后的学习大有裨益.趁热打铁,这一节讲讲什么是对话框和非模态对话框,以及模态对话框怎样弹出. 一.模态对话框和非 ...
- mfc非模态对话框
按照我们的之前的做法,先新建工程. 把基本的内容都添加上. 形成这样一个样子: 并且进行试运行,让程序能够完成加法运算. 值的注意的是,静态文本那里要改一下名字,否则无法将成员变量进行添加. 前期准备 ...
- VS2010/MFC对话框:非模态对话框的创建及显示
非模态对话框的创建及显示 上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切 ...
随机推荐
- Java序列化 如何把多个对象存储在一个文件中
/** * 用于保存模板文件,内容包括: * 1,标志位,1 int * 2,版本 1 int * 3,数据头长度 1 int * 4,预留数据头空间 5120 byte * 5,后续数据长度 ...
- Selenium webdriver 之select 控件封装,解决onchange问题
使用webdriver的时候,select 控件经常会绑定onchange 事件,在selenium2.09 之前click 方法对onchange 事件有bug,2.09 以后修复了,但是根据经验也 ...
- win7远程链接ubuntu 桌面版
1.安装ubuntu 使用vagrant 添加了一个ubuntu12.04(xmanager好像只能控制最高这个版本,14.04没成功过) 2.安装xmanager 4 3.修改ubutu配置文件 s ...
- Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库
前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...
- Python的数据类型的一些知识
int 类型表示(正负)整数,str 类型表示字符串(Unicode字符序列): 所表示的整数大小只受限于机器内存,而非固定的字节数. 字符串可以用双引号或是单引号封装,需要成对的出现. 传统上,py ...
- jQuery中实现自定义方法的扩展
JQuery包装器提供了大量的方法,可以再页面中直接使用.但是,没有 任何一个库可以满足所有的需求,所以,JQuery库提供了丰富的扩展功能 .以禁用一组表单元素为例,看看怎么简单有效的在JQuery ...
- bzoj 1038 [ZJOI2008]瞭望塔(半平面交)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1038 [题意] 找一个最低塔高使可以看到村庄的每一个角落. [思路] 半平面交 能够看 ...
- uvalive 3135 Argus priority_queue
用优先队列维护每个时间点优先级最高的元素. #include<iostream> #include<cstdio> #include<cstdlib> #inclu ...
- 关于CSS样式优先级
一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用!important可 ...
- 只允许input框输入数字,输入其他的键的时候,直接不显示的方法
function numInteger(){ if((event.keyCode>=48 && event.keyCode<=57) || (event.keyCode& ...