C++ MessageBox

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;
}

猜你喜欢

转载自blog.csdn.net/zxx2096/article/details/81190725