VS2010-MFC(对话框:消息对话框)
转自:http://www.jizhuomi.com/software/171.html
前面几节讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框。本节讲解Windows系统中最常用最简单的一类对话框--消息对话框。
我们在使用Windows系统的过程中经常会见到消息对话框,提示我们有异常发生或提出询问等。因为在软件开发中经常用到消息对话框,所以MFC提供了两个函数可以直接生成指定风格的消息对话框,而不需要我们在每次使用的时候都要去创建对话框资源和生成对话框类等。这两个函数就是CWnd类的成员函数MessageBox()和全局函数AfxMessageBox()。
一.CWnd::MessageBox()函数和AfxMessageBox()函数的用法
下面分别讲解两个函数的用法。
1.CWnd::MessageBox()函数
CWnd::MessageBox()的函数原型如下:
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK
);
参数说明:
lpszText:需要显示的消息字符串。
lpszCaption:消息对话框的标题字符串。默认值为NULL。取值为NULL时使用默认标题。
nType:消息对话框的风格和属性。默认为MB_OK风格,即只有“确定”按钮。
nType的取值可以是下面两个表中任取一个值,也可以是各取一个值的任意组合。即可以指定一个对话框类型,也可以指定一个对话框图标,还可以两者都设定。
| nType 取值 | 参数说明 |
| MB_ABORTRETRY | 有“终止”、“重试”和“忽略”按钮 |
| MB_OK | 有“确定”按钮 |
| MB_OKCANCEL | 有“确定”和“取消”按钮 |
| MB_RETRYCANCEL | 有“重试”和“取消”按钮 |
| MB_YESNO | 有“是”和“否”按钮 |
| MB_YESNOCANCEL | 有“是”、“否”和“取消”按钮 |
对话框类型表
| nType 取值 | 显示图标 |
| MB_ICONEXCLAMTION MB_ICONWARNING |
![]() |
| MB_ICONASTERISK MB_ICONINFORMATION |
![]() |
| MB_ICONQUESTION | ![]() |
| MB_ICONHAND MB_ICONSTOP MB_ICONERROR |
![]() |
对话框图标表
PS:如果想要设置nType的值为类型和图标的组合,可以像这样取值:MB_OKCANCEL | MB_ICONQUESTION。按位取或就可以了。
2.AfxMessageBox()函数
AfxMessageBox()的函数原型为:
int AfxMessageBox(
LPCTSTR lpszText,
UINT nType = MB_OK,
UINT nIDHelp = 0
);
参数说明:
lpszText:同CWnd::MessageBox()函数
nType:CWnd::MessageBox()函数
nIDHelp:此消息的帮助的上下文ID。默认值为0,取0时表示要使用应用程序的默认帮助上下文。
二.CWnd::MessageBox()和AfxMessageBox()的返回值
我们在调用了上面两个函数后,都可以弹出模态消息对话框。消息对话框关闭后,我们也都可以得到它们的返回值。两者的返回值就是用户在消息对话框上单击的按钮的ID,可以是以下值:
IDABORT:单击“终止”按钮。
IDCANCEL:单击“取消”按钮。
IDIGNORE:单击“忽略”按钮。
IDNO:单击“否”按钮。
IDOK:单击“确定”按钮。
IDRETRY:单击“重试”按钮。
IDYES:单击“是”按钮。
三.应用举例
我们还是拿前面加法计算器的程序做例子。
大家是否记得,在模态对话框及其弹出过程中我们修改了CAdditionDlg::OnBnClickedAddButton()函数,在点了“计算”按钮以后先弹出了一个模态对话框,询问用户是否确定要进行加法计算,并通过模态对话框DoModal函数的返回值判断用户选择了“确定”还是“取消”。这些功能很明显消息对话框完全能够实现,下面就使用消息对话框来替代原来的模态对话框。
在非模态对话框的创建及显示中,注释了模态对话框的相关代码,加入了非模态对话框的创建和显示代码,我们在加入消息对话框之前将非模态对话框的代码也注释或删除掉,确保此函数中不再生成原来的模态对话框或非模态对话框。
修改后的CAdditionDlg::OnBnClickedAddButton()函数如下:
void CAdditionDlg::OnBnClickedAddButton()
{
// TODO: Add your control notification handler code here INT_PTR nRes; // 显示消息对话框
nRes = MessageBox(_T("您确定要进行加法计算吗?"), _T("加法计算器"), MB_OKCANCEL | MB_ICONQUESTION);
// 判断消息对话框返回值。如果为IDCANCEL就return,否则继续向下执行
if (IDCANCEL == nRes)
return; // 将各控件中的数据保存到相应的变量
UpdateData(TRUE); // 将被加数和加数的加和赋值给m_editSum
m_editSum = m_editSummand + m_editAddend; // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值
UpdateData(FALSE);
// 设置属性对话框为向导对话框
//sheet.SetWizardMode();
}
编译运行,在运行结果对话框上点“计算”按钮弹出以下消息对话框:

大家也可以将MessageBox函数换为AfxMessageBox()函数,同时参数进行相应修改,运行下看看效果。
消息对话框就讲到这里了。在以后的软件开发中用到它的频率很高,希望大家慢慢熟悉并掌握它。
VS2010-MFC(对话框:消息对话框)的更多相关文章
- MFC编程入门之十六(对话框:消息对话框)
前面几节讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消息对话 ...
- VS2010/MFC:模态对话框及其弹出过程
模态对话框及其弹出过程 加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益.趁热打铁,这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎 ...
- VS2010/MFC编程(对话框:模态对话框及其弹出过程)
讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出. 一.模态对话框和非模态对话框 Windows对话框分为两类:模态对话框和非模态对话框. 模态对话框是这样的对话框,当它弹出后,本应用程序其 ...
- VS2010/MFC编程入门之十六(对话框:消息对话框)
前面几节鸡啄米讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消 ...
- 工作总结:VS2010/MFC编程入门之十六(对话框:消息对话框)
原文地址:http://www.jizhuomi.com/software/171.html 我们在使用Windows系统的过程中经常会见到消息对话框,提示我们有异常发生或提出询问等.因为在软件开发中 ...
- VS2010/MFC对话框:消息对话框
消息对话框 我们在使用Windows系统的过程中经常会见到消息对话框,提示我们有异常发生或提出询问等.因为在软件开发中经常用到消息对话框,所以MFC提供了两个函数可以直接生成指定风格的消息对话框,而不 ...
- VS2010/MFC对话框:文件对话框
文件对话框 上一讲介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中 ...
- VS2010/MFC编程入门之十九(对话框:颜色对话框)
鸡啄米在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜 ...
- VS2010/MFC编程入门之十七(对话框:文件对话框)
上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...
随机推荐
- python从字符串中提取数字_filter
my_str = '123and456' number = filter(str.isdigit, my_str ) # number = 123456 使用正则表达式: >>> i ...
- look at me
I would bet my life, like I bet my heart我以生命与真心担保That you were the one, baby你就是我的命中注定I've never been ...
- UML关系类图
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
- vue-组件之间的通信:
组件之间的通信:一个组件被调用,那么里面的数据就需要从前者调用,因为在开发中组件时重复调用的,在页面中会反复使用,但是里面的数据是不一样的,谁调用这个组件谁就传递数据给这个组件,所以就要暴露一些接口, ...
- hive常见的存储格式
Hive常见文件存储格式 背景:列式存储和行式存储 首先来看一下一张表的存储格式: 字段A 字段B 字段C A1 B1 C1 A2 B2 C2 A3 B3 C3 A4 B4 C4 A5 B5 C5 行 ...
- NOIp2018集训test-9-1(am)
1.最大值 可以用FWT水过去,李巨写了FWT结果中途爆int了炸了几十分好像. 我乱搞了一下把除了大数据有or的搞出来然后90,还是蛮划算的.我yy的做法: 1.xor 字典树上贪心, 一开始我打了 ...
- 2019年12月12日英语学习-Will I Or Won't I ?
这节英语课上的内容没记住多少东西,觉得这个主题太枯燥了,不过整堂课和外教沟通交流还是不错的,因为这节课就我一个学生.给我了充分的机会去张嘴交流互动. 也没记住什么东西,不知道写什么.只记住将要决定做某 ...
- NX二次开发-UFUN工程图插入PNG图片UF_DRF_create_image_from_file
#include <uf.h> #include <uf_drf.h> UF_initialize(); //插入PNG char* file_name = "D:\ ...
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...
- prettier包升级后vue项目运行报错
今天用vue-cli新建vue项目的时候,发现项目怎么都跑不起来. 最后通过与以前项目作比较,发现prettier这个依赖的版本从原来的1.12.0升级成了1.13.1.我也不太清楚为什么升级后项目跑 ...



