说明
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 }
运行结果如图所示:
由于MessageBox是继承自CWnd类,因此,只有当创建了窗口之后才能调用它。MFC提供了另一个消息框函数——AfxMessage(),它的功能和MessageBox一样,类似一个全局的MessageBox函数。无需创建窗口也可以调用,如应用程序类,文档类,以及其他一些非窗口类。