10.5 消息对话框与公用对话框
除了CDialog类外,MFC提供几个从CDialog类派生而来的类,封装了常用的对话框功能,这些封装的对话框称为"公用对话框",是Windows公用对话框类的一部分。主要有处理颜色选择的CColorDialog类,处理打开和保存文件的CFileDialog类,执行查找和替换操作的CFindReplaceDialog类,指定字体的CFontDialog类,完成打印工作的CPrintDialog类。本节将介绍这些对话框的使用。
10.5.1 消息对话框实例
消息对话框是用于显示提示消息的对话框,是程序用于显示提示信息、错误信息等用户接口的重要组成部分。合理地使用消息对话框可以提高程序的界面友好性。函数原型为:
- int MessageBox( // 返回值
表示是否成功的显示消息对话框 - LPCTSTR lpszText, // 要显示的提示信息
- LPCTSTR lpszCaption = NULL, // 要显示的
消息对话框的标题 - UINT nType = MB_OK ); // 消息对话框的样式
在此函数中,通过nType参数可以设置消息对话框的样式。由以下几部分组合而成。
(1)指定消息框中包含的按钮,此标记的有效取值如表10-1所示。
表10-1 消息框的按钮标记
|
标 记< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
含 义 |
|
MB_ABORTRETRYIGNORE |
消息框中包含3个命令按钮:
取消、重试和忽略 |
|
MB_OK |
消息框中包含1个命令按钮:
确定。此选项是默认选项 |
|
MB_OKCANCEL |
消息框中包含2个命令按钮:
确定和取消 |
|
MB_RETRYCANCEL |
消息框中包含2个命令按钮:
重试和取消 |
|
MB_YESNO |
消息框中包含2个命令按钮:
是和否 |
|
MB_YESNOCANCEL |
消息框中包含3个命令按钮:
是、否和取消 |
(2)指定消息框中显示的图标,此标记的有效取值如表10-2所示。
表10-2 消息框的图标标记
|
标 记 |
含 义 |
|
MB_ICONEXCLAMATION,
MB_ICONWARNING |
在消息框中显示警告图标 |
|
MB_ICONINFORMATION,
MB_ICONASTERISK |
在消息框中显示带叹号的图标 |
|
MB_ICONQUESTION |
在消息框中显示带问号的图标 |
|
MB_ICONSTOP, MB_ICONERROR,
MB_ICONHAND |
在消息框中显示停止图标 |
(3)指定消息框中的默认按钮,此标记的有效取值如表10-3所示。
表10-3 默认按钮取值标记
|
标 记 |
含 义 |
|
MB_DEFBUTTON1 |
第一个按钮是默认按钮,
此选项是默认值 |
|
MB_DEFBUTTON2 |
第二个按钮是默认按钮 |
|
MB_DEFBUTTON3 |
第三个按钮是默认按钮 |
|
MB_DEFBUTTON4 |
第四个按钮是默认按钮 |
(4)指定消息框的工作方式,此标记的有效取值如表10-4所示。
表10-4 消息框的工作方式标记
|
标 记 |
含 义 |
|
MB_APPLMODAL |
要继续程序,必须先对消息框作
出响应,此选项是默认选项 |
|
MB_SYSTEMMODAL |
与MB_APPLMODAL标记的作用
相同,但是具有WS_EX_TOPMOST样式 |
|
MB_TASKMODAL |
与MB_APPLMODAL标记的作用相同,
但是使用此标记,当前线程的所有对
话框都不可用 |
以下代码是MessageBox的使用示例。
- void CDialogExampleDlg::OnButtonDialog
Message() // 消息对话框测试按钮处理函数 - {
- MessageBox("Hello World!", "提示",
MB_OK); // 显示消息对话框 - }
上面代码使用MessageBox()函数,弹出标题是"提示",内容是"Hello World!"的消息框。程序运行效果如图10-18所示。
|
| 图10-18 消息对话框 |