MessageBox功能创建,显示和操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。
int MessageBox(
HWND 【的hWnd】, | //所有者窗口的句柄 |
LPCTSTR 【lpText】, | //消息框中的文本地址 |
LPCTSTR 【lpCaption】, | //消息框标题的地址 |
UINT 【UTYPE】 | //样式的消息框 |
); |
参数
【的hWnd】
标识要创建的消息框的所有者窗口。如果此参数为NULL,则消息框不具有所有者窗口。
【lpText】
指向包含要显示的消息的以null结尾的字符串。
【lpCaption】
指向用于对话框标题的以null结尾的字符串。如果此参数为NULL,则使用默认标题Error。
【UTYPE】
指定一组位标志来确定对话框的内容和行为。此参数可以是来自以下标志组的标志的组合。
指定以下标志之一来指示消息框中包含的按钮:
旗 | 含义 |
MB_ABORTRETRYIGNORE | 消息框包含三个按钮:中止,重试和忽略。 |
MB_OK | 消息框包含一个按钮:OK。这是默认值。 |
MB_OKCANCEL | 消息框包含两个按钮:确定和取消。 |
MB_RETRYCANCEL | 消息框包含两个按钮:重试和取消。 |
MB_YESNO | 消息框包含两个按钮:是和否。 |
MB_YESNOCANCEL | 消息框包含三个按钮:是,否和取消。 |
在消息框中指定以下标志之一来显示图标:
旗 | 含义 |
MB_ICONEXCLAMATION, MB_ICONWARNING | 消息框中会显示感叹号图标。 |
MB_ICONINFORMATION, MB_ICONASTERISK | 消息框中会显示一个由小写字母【i】组成的图标。 |
MB_ICONQUESTION | 消息框中会显示问号图标。 |
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND | 消息框中会显示停止标志图标。 |
指定以下标志之一来指示默认按钮:
旗 | 含义 |
MB_DEFBUTTON1 | 第一个按钮是默认按钮。 MB_DEFBUTTON1是默认值,除非指定了MB_DEFBUTTON2,MB_DEFBUTTON3或MB_DEFBUTTON4。 |
MB_DEFBUTTON2 | 第二个按钮是默认按钮。 |
MB_DEFBUTTON3 | 第三个按钮是默认按钮。 |
MB_DEFBUTTON4 | 第四个按钮是默认按钮。 |
指定以下标志之一来指示对话框的模式:
旗 | 含义 |
MB_APPLMODAL | 在【的hWnd】参数标识的窗口中,用户必须回复消息框才能继续工作。然而,用户可以移动到其他应用程序的窗口并在这些窗口中工作。 根据应用程序中Windows的层次结构,用户可以移动到应用程序内的其他窗口。消息框的父级的所有子窗口将自动禁用,但弹出窗口不会。 如果既不指定MB_SYSTEMMODAL也不指定MB_TASKMODAL,则MB_APPLMODAL是默认值。 |
MB_SYSTEMMODAL | 与MB_APPLMODAL相同,除了消息框具有WS_EX_TOPMOST样式。使用系统模态消息框通知用户需要立即关注的严重的,潜在的破坏性错误(例如,内存不足)。该标志对用户与除了与【的hWnd】相关的窗口以外的其他窗口进行交互的能力没有任何影响。 |
MB_TASKMODAL | 与MB_APPLMODAL相同,只有当【的hWnd】参数为NULL时,属于当前任务的所有顶级窗口将被禁用。当调用应用程序或库没有可用的窗口句柄但仍需要阻止输入到当前应用程序中的其他窗口而不挂起其他应用程序时,请使用此标志。 |
另外,您可以指定以下标志:
MB_DEFAULT_DESKTOP_ONLY
当前接收输入的桌面必须是默认桌面;否则,该函数失败。默认桌面是用户登录后应用程序运行的桌面。
MB_HELP
在消息框中添加一个帮助按钮。选择帮助按钮或按F1会生成一个帮助事件。
MB_RIGHT
文本是正确的。
MB_RTLREADING
在希伯来语和阿拉伯语系统上使用从右到左的阅读顺序显示消息和字幕文本。
MB_SETFOREGROUND
消息框将成为前台窗口。在内部,Windows调用消息框的SetForegroundWindow功能。
MB_TOPMOST
消息框使用WS_EX_TOPMOST窗口样式创建。
MB_SERVICE_NOTIFICATION
仅Windows NT:呼叫者是向用户通知事件的服务。该函数在当前活动桌面上显示一个消息框,即使没有用户登录到计算机。
如果设置此标志,则【的hWnd】参数必须为NULL。这样,消息框可以出现在与【的hWnd】对应的桌面以外的桌面上。
对于Windows NT 4.0版,MB_SERVICE_NOTIFICATION的值已更改。看到WINUSER.H的旧的和新的值。Windows NT 4.0通过在MessageBox和MessageBoxEx的实现中将旧值映射到新值,为现有服务提供向后兼容性。此映射仅对具有由链接器设置的版本号小于4.0的可执行文件完成。
要构建一个使用MB_SERVICE_NOTIFICATION的服务,并且可以在Windows NT 3.x和Windows NT 4.0上运行,您有两个选择。
1.At link-time, specify a version number less than 4.0; or |
在链接时间,指定版本4.0。运行时,使用GetVersionEx功能检查系统版本。然后在Windows NT 3.x上运行时,使用MB_SERVICE_NOTIFICATION_NT3X;并在Windows NT 4.0上使用MB_SERVICE_NOTIFICATION。 |
MB_SERVICE_NOTIFICATION_NT3X
仅Windows NT:此值对应于为Windows NT版本3.51为MB_SERVICE_NOTIFICATION定义的值。
返回值
如果没有足够的内存创建消息框,返回值为零。
如果函数成功,则返回值是对话框返回的以下菜单项值之一:
值 | 含义 |
IDABORT | 中止按钮被选中。 |
IDCANCEL | 取消按钮被选中。 |
IDIGNORE | 忽略按钮被选中。 |
IDNO | 未选择按钮。 |
IDOK | 确定按钮被选中。 |
IDRETRY | 已选择重试按钮。 |
IDYES | 是按钮被选中。 |
如果消息框具有取消按钮,则如果按下ESC键或选择取消按钮,该函数将返回IDCANCEL值。如果消息框没有取消按钮,按ESC不起作用。
备注
当您使用系统模态消息框来指示系统内存不足时,【lpText】和【lpCaption】参数指向的字符串不应从资源文件中获取,因为尝试加载资源可能会失败。
当应用程序调用{??989796213}并为【UTYPE】参数指定MB_ICONHAND和MB_SYSTEMMODAL标志时,Windows将显示生成的消息框,而不管可用内存如何。指定这些标志时,Windows将消息框文本的长度限制为三行。Windows将【不】自动中断行以适应消息框,因此消息字符串必须包含回车符,以便在适当的位置断开行。
如果在出现对话框时创建消息框,请使用对话框的句柄作为【的hWnd】参数。【的hWnd】参数不应该标识子窗口,例如对话框中的控件。
Windows 95:系统最多支持16,364个窗口句柄。
也可以看看
FlashWindow, MessageBeep, MessageBoxEx, MessageBoxIndirect, SetForegroundWindow