VS2013/MFC编程入门之十五(对话框:消息对话框)
来源:互联网 发布:qq主题下载软件 编辑:程序博客网 时间:2024/05/22 08:18
本节讲解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有“是”、“否”和“取消”按钮
对话框类型表
MB_ICONWARNINGMB_ICONASTERISK
MB_ICONINFORMATIONMB_ICONQUESTIONMB_ICONHAND
MB_ICONSTOP
MB_ICONERROR
对话框图标表
如果想要设置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;
- else
- {
- // 将各控件中的数据保存到相应的变量
- UpdateData(TRUE);
- // 将被加数和加数的加和赋值给m_editSum
- m_editSum = m_editSummand + m_editAddend;
- // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值
- UpdateData(FALSE);
- }
- // 设置属性对话框为向导对话框
- //sheet.SetWizardMode();
- }
编译运行,在运行结果对话框上点“计算”按钮弹出以下消息对话框:
大家也可以将MessageBox函数换为AfxMessageBox()函数,同时参数进行相应修改,运行下看看效果。
作为以后软件开放过程中最常用的对话框,消息对话框就讲到这里了。希望大家慢慢熟悉并掌握它。有问题欢迎回博客交流。
- VS2013/MFC编程入门之十五(对话框:消息对话框)
- VS2010/MFC编程入门之十五(对话框:消息对话框)
- VS2010/MFC编程入门之十五(对话框:消息对话框)
- VS2013/MFC编程入门之十六(对话框:文件对话框)
- VS2013/MFC编程入门之十七(对话框:字体对话框)
- VS2013/MFC编程入门之十八(对话框:颜色对话框)
- C++ MFC / VS2013 之十五(对话框:文件对话框)
- VS2010/MFC编程入门之十六(对话框:消息对话框)
- VS2013/MFC编程入门之八(对话框:为控件添加消息处理函数)
- VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)
- C++ MFC / VS2013 之十四 (对话框:消息对话框)
- VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)
- VS2013/MFC编程入门之六(对话框:为对话框添加控件)
- VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- VS2013/MFC编程入门之九(对话框:设置对话框控件的Tab顺序)
- VS2013/MFC编程入门之十(对话框:模态对话框及其弹出过程)
- VS2013/MFC编程入门之十一(对话框:非模态对话框的创建及显示)
- VS2013/MFC编程入门之十二(对话框:属性页对话框及相关类的介绍)
- 6 接口、Lambda表达式和内部类
- 子类调用父类的带参构造
- 矩阵函数
- 6.1 接口
- 6.2 接口的例子
- VS2013/MFC编程入门之十五(对话框:消息对话框)
- 6.3 Lambda表达式
- 继承与派生
- 6.4 内部类
- iOS开发- 常用的第三方资源
- 酷比魔方talk8x官方线刷教程疑问解析
- 深入探讨傅立叶变换、拉普拉斯变换、Z变换的联系与应用
- Struts2实现文件上传(相对路径)
- 74. Search a 2D Matrix&240. Search a 2D Matrix II