当前位置:C++技术网 > 资讯 > Windows API最简单的消息函数MessageBox分析

Windows API最简单的消息函数MessageBox分析

更新时间:2015-06-27 00:12:30浏览次数:1+次

    本文详细介绍了消息函数MessageBox,重在介绍API函数的构成形式和参数使用分析,常见的API函数参数标识使用方法。同时也对消息函数一个详尽的介绍。希望通过对MessageBox函数的介绍,可以对API函数的使用方法有所熟悉设置是掌握。
函数原型声明如下:

int MessageBox(
  HWND hWnd,          // - 父窗口句柄
  LPCTSTR lpText,     // - 消息内容
  LPCTSTR lpCaption,  // - 消息框标题
  UINT uType          // - 消息框样式
); 


LPCTSTR:中性版本的字符串,使用_T("内容")传值。在API函数中很普遍。

#ifdef UNICODE
#define MessageBox  MessageBoxW  // - Unicode版本,即宽字符集版本
#else
#define MessageBox  MessageBoxA  // - ANSI版本,即窄字符版本
#endif // !UNICODE 

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

    如果使用MessageBox则是中性版本,使用_T宏来传递字符串,如MessageBox(NULL,_T("内容"),_T("标题"),MB_OK);。如果使用MessageBoxA则是ANSI版本的窄字符,所以直接用双引号传值,如MessageBoxA(NULL,"内容","标题",MB_OK);。如果是MessageBoxW则可以在双引号前加个大写字母L,如MessageBoxW(NULL,L"内容",L"标题",MB_OK);
     这是最简单的API函数,但是可以说明这些函数的使用.
     API函数中,句柄是一个ID,可以标识一个窗口、一个文件等。此处设置为空,表示将消息对话框的父窗口设置为桌面窗口。
     最后一个参数是一个标识,用一个数字表示一种消息框的类型。一个整数通过位操作来得到各种窗口类型的组合。这个在API函数中,太常见了。这里就是通过这个简单的函数说明,来介绍一下API函数的样子,让没有刚开始接触的人更好理解。
     事实上,使用了这么久的API函数,MessageBox函数使用最为频繁。然而对这些标志也没有理清楚,所以也借此机会整理一下,也可以给以后使用查询。
     最后一个参数uType信息非常丰富,也非常容易混淆,下面对它进行分组。组合方法使用位或。如:MB_ICONQUESTION | MB_OK | MB_DEFBUTTON1,这个就放在最后一个参数中即可。API函数中,这种用法非常普遍,希望你动手试试。MB_表示MessageBox的两个单词的首字母的缩写。ICON表示图标的意思。完整的例子如:MessageBox(NULL,_T("消息内容"),_T("标题"),MB_OK|MB_ICONWARNING);
     1.消息框中的按钮类型:决定消息框的按钮个数和按钮类型。

    从头到尾决定按钮类型标志如下:

MB_ABORTRETRYIGNORE、MB_CANCELTRYCONTINUE、MB_HELP、MB_OK、MB_OKCANCEL、MB_RETRYCANCEL、MB_YESNO、MB_YESNOCANCEL 。 


     2.显示图标类型:决定消息内容前面是何种图片图标。

    放在一起的代表是一种图标,只是宏名字不一样罢了。

 MB_ICONEXCLAMATION,MB_ICONWARNING:感叹号,表示需要特别注意。
 MB_ICONINFORMATION, MB_ICONASTERISK:小写字母i图标,表示提示信息。
 MB_ICONQUESTION:问号,表示提示选择。
 MB_ICONSTOP,MB_ICONERROR,MB_ICONHAND:错误提示图标。标识出错了。 
 
     3.设置默认按钮:消息显示时默认选中的是哪个按钮。

    默认按钮以MB_DEFBUTTON1、MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4后面的数字,分别代表从左到右的默认选中的第几个按钮。比如MB_DEFBUTTON2默认选中第二个按钮,如果是YESNO则选中NO。可以直接回车就单击了这个默认选中的按钮。

 
     4.最后是消息响应后的返回值:根据返回值,我们知道用户单击了哪个按钮,从而做相应的操作。

    MessageBox的返回值,就是单击的按钮的类型,单击不同的按钮,返回值不同。Windows API中,已经将返回值定义为宏,便于使用。下面就是各种返回值的宏。

IDOK:单击了确定按钮。
IDCANCEL:单击了取消按钮。
IDYES:单击了是按钮。
IDNO:单击了否按钮。
IDABORT:单击了终止按钮。
IDCONTINUE:单击了继续按钮。
IDIGNORE:单击了忽略按钮。
IDRETRY:单击了重试(R)按钮。
IDTRYAGAIN:单击了重试(T)按钮。这个和IDRETRY是不一样的,含重试后面的字母来区别。 

    对于返回值的使用,下面给出一个例子:

if(IDOK==MessageBox(NULL,_T("请选择"),_T("选择YES 或者NO),MB_YESNO))
{
    MessageBox(NULL,_T("你选择了YES"),_T("选择),MB_OK);
}
else
{
    MessageBox(NULL,_T("你选择了NO"),_T("选择),MB_OK);
}

    注:其他各种标志,就不一一列举了,这里列举了非常常用的一些标志,如果有兴趣,请查询MSDN。其他API函数差不多也是如此的,希望你能通过这个简单的函数,学会API的函数使用的一些技巧。