Windows API一日一练(4)MessageBox函数

Post date: 2012/3/27 上午 07:13:52

分类: Direct3D2007-07-09 13:10 5517人阅读 评论(2) 收藏 举报

为了显示提示信息给用户,Windows是提供了一个非常方便的API函数MessageBox给用户使用,使用这个API函数可以显示简单的文字信息出来,提醒或提示用户进行下一步操作。

函数声明如下:

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

从上面可以看出,Windows的API是两种声明,一种是使用到ANSI编码,一种是使用到UNICODE编码的API函数。通过宏定义把这两种API名称统一到MessageBox的声明。这是一种使用选择不同API的技术,在今后的编程里,大多数都需要使用UNICODE编码了,因为可以适应不同国家的语言显示,可以国际化编程,特别对于中文支持更加需要UNICODE编程。

下面来解释一下参数的定义:

hWnd是指向父窗口的句柄,如果没有父窗口,可以把这个参数设置为NULL。

lpText是需要显示的文字。显示字符串的起始地址。

lpCaption是在窗口上标题显示。

uType是窗口组合按钮和显示图标的类型。后面再详细说明。

返回值是一个整数,如果有取消按钮,并且按下ESC键就返回IDCANCEL。如果有其它按钮,并且按下,就返回相应的值。主要的值如下:

IDABORT 放弃按钮

IDCANCEL取消按钮

IDCONTINUE 继续按钮

IDIGNORE 忽略按钮

IDNO 否按钮

IDOK 确定按钮

IDRETRY 重试按钮

IDTRYAGAIN 重试按钮

IDYES 是按钮

演示例子如下:

上面显示的代码是:

#001 //MB_DEFBUTTON4

#002 int CMsgBox::Show_MB_DEFBUTTON4(void)

#003 {

#004 //显示MB_DEFBUTTON4。

#005 return ::MessageBox(NULL, _T("MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP"),

#006 _T("第一个应用程序"), MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP|MB_ICONQUESTION);

#007 }

uType常用的选择值如下:

按钮类型:

MB_ABORTRETRYIGNORE

MB_CANCELTRYCONTINUE

MB_HELP

MB_OK

MB_OKCANCEL

MB_RETRYCANCEL

MB_YESNO

MB_YESNOCANCEL

图标类型:

MB_ICONEXCLAMATION

MB_ICONWARNING

MB_ICONINFORMATION

MB_ICONASTERISK

MB_ICONQUESTION

MB_ICONSTOP

MB_ICONERROR

MB_ICONHAND

设置缺省按钮值:

MB_DEFBUTTON1

MB_DEFBUTTON2

MB_DEFBUTTON3

MB_DEFBUTTON4

修改显示信息窗口的属性:

MB_APPLMODAL

MB_SYSTEMMODAL

MB_TASKMODAL

MB_RIGHT

MB_RTLREADING

MB_SETFOREGROUND

MB_TOPMOST

MB_SERVICE_NOTIFICATION