MFC中的MessageBox是个很有用的工具,但是如何准确而又正确的使用它则是非常重要。其原型如下:
int CWnd::MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK)
参数说明:
lpszText: 消息框中的消息内容。
lpszCaption: 消息框标题栏标题。默认为NULL,显示项目名称。
nType:消息框样式。默认MB_OK。
返回值为nType消息框样式。例:当点击消息框中的OK按钮,函数将返回IDOK。
消息框样式以及其返回代码列如表-1:
类型 | 按钮 | 返回代码 |
MB_ABORTRETRYIGNORE | Abort, Retry, Ignore | IDABORT, IDRETRY, IDIGNORE |
MB_OK | OK | IDOK |
MB_OKCANCEL | OK, Cancel | IDOK, IDCANCEL |
MB_RETRYCANCEL | Retry, Cancel | IDRETRY, IDCANCEL |
MB_YESNO | Yes, No | IDYES, IDNO |
MB_YESNOCANCEL | Yes, No, Cancel | IDYES, IDNO, IDCANCEL |
另外,也可以把MB_SYSTEMMODEL加入到nType中,表示系统模式。而默认情况下,消息框处于应用程序模式。系统模式消息框只用于出现了要求立即引起注意的严重错误情况。
可以通过给nType使用MB_ICON添加一些消息框图标。如MB_ICONINFORMATION,MB_ICONQUESTION, MB_ICONSTOP等。一个完整的消息框如下所示:
int nFlag = MessageBox("content", "Tip", MB_ICONINFORMATION | MB_YESNOCANCEL);
if(nFlag == IDYES)
{
//Do somesthing
}
运行结果如图-1所示:
图-1
由于MessageBox是继承自CWnd类,因此,只有当创建了窗口之后才能调用它。MFC提供了另一个消息框函数——AfxMessage(),它的功能和MessageBox一样,类似一个全局的MessageBox函数。无需创建窗口也可以调用,如应用程序类,文档类,以及其他一些非窗口类。