前面章节都是让人脑细胞高度紧张,这一章放松一下。对于公共对话框MessageBox大家并不陌生,在MFC的CWnd类中封装了一个MessageBox()成员函数,但MSDN并不推荐使用,一般用AfxMessageBox()全局函数,任何地方都可使用。
int
AfxMessageBox(int
AFXAPI AfxMessageBox( LPCTSTR lpszText, UINT nIDPrompt, //要表示的字符串 UINT nType = MB_OK, UINT nType = MB_OK, //画面形状(按钮、模式、图标、缺省值4个值组合使用) UINT nIDHelp = 0 UINT nIDHelp = (UINT) -1 //帮助ID,缺省为0 ); );
返回值 | 说明 |
---|---|
0 | 不能正常表示 |
IDYES | 被按下 |
IDNO | 被按下 |
IDOK | 被按下 |
IDCANCEL | 被按下或【ESC】被按下 |
IDABORT | 被按下 |
IDIGNORE | 被按下 |
IDRETRY | 被按下 |
显示按钮 | 说明 |
ID_ABORTRETRYIGNORE | |
ID_OK | |
ID_OKCANCEL | |
ID_RETRYCANCEL | |
ID_YESNO | |
ID_YESNOCANCEL | |
模式 | 说明 |
ID_APPMODAL | 模态(缺省值)即不关闭就不能回到父窗口,但可以切换到其它应用程序。 |
ID_SYSTEMMODAL | 系统模态即不关闭就不能回到任何窗口。 |
ID_TASKMODAL | 特殊用途而备用。 |
显示图标 | 说明 |
ID_ICONEXCLAMATION | 感叹符号 |
ID_ICONINFORMATION | 情报符号 |
ID_ICONquestion | 问号 |
ID_ICONSTOP | 停止符号 |
缺省按钮 | 说明 |
ID_DEFBUTTON1 | 第一个探针为缺省按钮。 |
ID_DEFBUTTON2 | 第二个探针为缺省按钮。 |
ID_DEFBUTTON3 | 第三个探针为缺省按钮。 |
类型:MFC将C++的关键字用宏定义成以下内容。
MFC类型 | 意思 | C++类型 |
---|---|---|
BOOL,BOOLEAN | 布尔型 | boolean |
BYTE | 1字节数值型 | char |
WORD | 2字节数值型 | short |
DWORD | 4字节数值型 | int |
UINT | 无符号整型 | unsigned int |
VOID | void型 | void |
LPDWORD | DWORD的指针型 | int* |
LPCSTR | 常量字符串 | const char* |
LPSTR | 字符串 | char* |
LPCVOID | 常量void指针 | const void* |
LPVOID | void指针 | void* |
常量:MFC将C++的常量用宏定义成以下内容。
MFC常量 | 意思 | C++常量 |
---|---|---|
NULL | 空指针 | 0 |
TRUE | 布尔值:真 | true |
FALSE | 布尔值:假 | false |
命名规则:MFC有以下命名规则。
可以在程序的任何位置插入TRACE()宏函数来调试程序,TRACE()宏函数只在DEBUG状态有效,即按<F5>运行时有效,<Ctrl + F5>时无效。另外,断点也可以设置条件。下面例子是一个没有消息循环的MFC程序(控制台程序)。断点的条件是“i>5”。
// test5.cpp : 定义控制台应用程序的入口点。 //#include
"stdafx.h"#include
"test5.h"#ifdef
_DEBUG#define
new DEBUG_NEW#endif
// 唯一的应用程序对象 CWinApp theApp;using namespace
std;int
_tmain(int
argc, TCHAR* argv[], TCHAR* envp[]) {int
nRetCode = 0; // 初始化 MFC 并在失败时显示错误if
(!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: 更改错误代码以符合您的需要 _tprintf(_T("致命错误: MFC 初始化失败\n")); nRetCode = 1; }else
{ // TODO: 在此处为应用程序的行为编写代码。for
(int
i=0; i<10; i++) { TRACE("i = [%d]\n", i); //按钮:[是(Y)][否(N)][取消],图标为:[i], //模式:不能切换到其它窗口,缺省:[否(N)] AfxMessageBox("这是小雅的MFC教程。" , MB_YESNOCANCEL|MB_SYSTEMMODAL|MB_ICONINFORMATION|MB_DEFBUTTON2); printf("劝学网:测试AfxMessageBox功能。\n"); } }return
nRetCode; }