1、简介
MessageBox是用来显示一个模态的对话框的,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。
所属头文件:Windows.h和sfxwin.h。
1、函数原型
在WinUser.h中,定义如下:
WINUSERAPI
int
WINAPI
MessageBoxA(
__in_opt HWND hWnd,
__in_opt LPCSTR lpText,
__in_opt LPCSTR lpCaption,
__in UINT uType);
WINUSERAPI
int
WINAPI
MessageBoxW(
__in_opt HWND hWnd,
__in_opt LPCWSTR lpText,
__in_opt LPCWSTR lpCaption,
__in UINT uType);
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif // !UNICODE
参数如下:
hWnd:此参数代表消息框拥有的窗口。如果为NULL,则消息框没有拥有窗口
lpText:息框的内容
lpCaption:消息框的标题
uType:指定一个决定对话框的内容和行为的位标志集
uType参数的值可以是下列标志组中标志的组合:
按钮参数 | 值 | 含义 | 备注 |
---|---|---|---|
MB_OK | 0x00000000L | 默认值。显示确认按钮 | 按钮![]() |
MB_OKCANCEL | 0x00000001L | 消息框含有两个按钮:OK和Cancel | 按钮![]() |
MB_ABORTRETRYIGNORE | 0x00000002L | 有Abort(放弃),Retry(重试)和Ignore(跳过) | 按钮![]() |
MB_YESNOCANCEL | 0x00000003L | 消息框含有三个按钮:Yes,No和Cancel | 按钮![]() |
MB_YESNO | 0x00000004L | 有是和否在里面 | 按钮![]() |
MB_RETRYCANCEL | 0x00000005L | 有Retry(重试)和Cancel(取消) | 按钮![]() |
MB_CANCELTRYCONTINUE | 0x00000006L | windows版本大于等于0x0500,有Retry(重试)、Cancel(取消)和continue(继续) | 按钮![]() |
MB_ICONHAND | 0x00000010L | 图标![]() | |
MB_ICONQUESTION | 0x00000020L | 图标![]() | |
MB_ICONEXCLAMATION | 0x00000030L | 图标 ![]() | |
MB_ICONASTERISK | 0x00000040L | 图标![]() | |
MB_USERICON | 0x00000080L | windwos版本大宇等0x0400才可使用,图标![]() | |
MB_ICONWARNING | 0x00000030L | windwos版本大宇等0x0400才可使用,图标![]() | |
MB_ICONERROR | 0x00000010L | windwos版本大宇等0x0400才可使用,图标![]() | |
MB_ICONINFORMATION | 0x00000040L | 图标![]() | |
MB_ICONSTOP | 0x00000010L | 图标![]() | |
MB_DEFBUTTON1 | 0x00000000L | 默认按钮![]() | |
MB_DEFBUTTON2 | 0x00000100L | 默认按钮![]() | |
MB_DEFBUTTON3 | 0x00000200L | 默认按钮![]() | |
MB_DEFBUTTON4 | 0x00000300L | windwos版本大宇等0x0400才可使用,默认按钮![]() | |
MB_APPLMODAL | 0x00000000L | 对话框![]() | |
MB_SYSTEMMODAL | 0x00001000L | 对话框 ![]() | |
MB_TASKMODAL | 0x00002000L | 对话框![]() | |
MB_HELP | 0x00004000L | windwos版本大宇等0x0400才可使用,对话框![]() | |
MB_NOFOCUS | 0x00008000L | 特殊声明![]() | |
MB_SETFOREGROUND | 0x00010000L | ![]() | |
MB_DEFAULT_DESKTOP_ONLY | 0x00020000L | ![]() | |
MB_TOPMOST | 0x00040000L | windwos版本大宇等0x0400才可使用![]() | |
MB_RIGHT | 0x00080000L | windwos版本大宇等0x0400才可使用![]() | |
MB_RTLREADING | 0x00100000L | windwos版本大宇等0x0400才可使用![]() |
返回值
ID | 值 | 含义 |
---|---|---|
IDOK | 1 | 点击OK按钮 |
IDCANCEL | 2 | 点击了取消按钮 |
IDABORT | 3 | 点击了中止按钮 |
IDRETRY | 4 | 点击了重试按钮 |
IDIGNORE | 5 | 点击了忽略按钮 |
IDYES | 6 | 点击了是按钮 |
IDNO | 7 | 点击了否按钮 |
IDCLOSE | 8 | windows版本大于等于0x0400才可使用 |
IDHELP | 9 | windows版本大于等于0x0400才可使用 |
IDTRYAGAIN | 10 | windows版本大于等于0x0500才可使用 |
IDCONTINUE | 11 | windows版本大于等于0x0500才可使用 |
IDTIMEOUT | 32000 | windows版本大于等于0x0501才可使用 |
int nScreenWide = GetSystemMetrics(SM_CXSCREEN);
int nScreenHight = GetSystemMetrics(SM_CYSCREEN);
MessageBoxPrintf(TEXT("Test"), TEXT("The screen is test,wide: %d hhight: %d"), nScreenWide, nScreenHight);
int MessageBoxPrintf(TCHAR* szCaption, TCHAR* szFormat, ...)
{
TCHAR szBuffer[1024] = { 0 };
va_list pAmgList;
va_start(pAmgList, szFormat);
_vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pAmgList);
va_end(pAmgList);
return MessageBox(NULL, szBuffer, szCaption, MB_RTLREADING);
}