MessageBox在windows.h中声明,所以程序需要引用windows.h 。
MessageBox是显示一个模态对话框,其中包含一个系统图标,一组按钮和一个简短的特定于应用程序消息,如状态或者错误的消息,消息框中返回一个整数值,该值指示用户单击了哪一个按钮。
函数原型:
int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
hWnd:弹出该对话框的句柄,若没有,可以直接写NULL,不写NULL就是模态,写NULL就是非模态。(建议写nullptr)
lpText:消息框中显示的内容。如果使用了Unicode库,需要使用TEXT宏对字符串进行转化。
lpCaption:消息框的标题。如果使用了Unicode库,需要使用TEXT宏对字符串进行转化。
注:当我们使用的是Unicode编码的时候,在调用MessageBox这个函数时需要加一个TEXT(也可以用“_T”替换)
uType:使用此参数制定消息框的类型(提示,警告、错误等),消息框中显示的按钮(确定、取消、忽略、重试等)及其他选项
图标参数:
MB_ICONEXCLAMATION 一个惊叹号出现在消息框
MB_ICONWARNING 一个惊叹号出现在消息框
MB_ICONINFORMATION 一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONASTERISK 一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION 一个问题标记图标出现在消息框
MB_ICONSTOP 一个停止消息图标出现在消息框
MB_ICONERROR 一个停止消息图标出现在消息框
MB_ICONHAND 一个停止消息图标出现在消息框
按钮参数:
MB_OK 默认值。有一个确认按钮在里面
MB_YESNO 有是和否在里面
MB_ABORTRETRYIGNORE 有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL 消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL 有Retry(重试)和Cancel(取消)
MB_OKCANCEL 消息框含有两个按钮:OK和Cancel
返回值
ID 选择了……
IDOK(1) OK
IDCANCEL(2) CANCEL
IDABORT(3) ABORT
IDRETRY(4) RETRY
IDIGNORE(5) IGNORE
IDYES(6) YES
IDNO(7) NO
例:
#include <windows.h>
long __stdcall callback(_EXCEPTION_POINTERS* excp)
{
MessageBox(nullptr, _T("Error"), _T("error"), MB_OK| MB_ICONEXCLAMATION);
printf("Error address %x/n", excp->ExceptionRecord->ExceptionAddress);
printf("CPU register:/n");
printf("eax %x ebx %x ecx %x edx %x/n", excp->ContextRecord->Eax, excp->ContextRecord->Ebx, excp->ContextRecord->Ecx, excp->ContextRecord->Edx);
return EXCEPTION_EXECUTE_HANDLER;
}
int main(int argc, char* argv[])
{
SetUnhandledExceptionFilter(callback);
_asm int 3 //只是为了让程序崩溃
//__debugbreak();
return 0;
}