MessageBox()并没有什么多少功能,但是能够在屏幕上显示一个窗口,提出一个问题,并且等候用户的输入。下面是MessageBox()的原型:
int MessageBox(HWND hwn,//handle of owner window
LPCTSTR lptext,//address of text in message box
LPCTSTR lpcaption,//address of title of message box
UINT utype);//style of message box
参数定义如下:
hwnd——这是信息框连续窗口的句柄。目前我们还不能谈及窗口句柄,因此只能认为它是信息框的父窗口。在DEMO2_2.CPP,我们将它设置为空值NULL,因此使用Windows桌面作为父窗口。
lptext——这是一个包含显示文本的空值终止字符串。
lpcaption——这是一个包含显示文本框标题的空值终止字符串。
utype——这大概是该簇参数中唯一令人激动的参数了,控制信息显示框的各类。
表2.3列出了几种MessageBox()选项(有些删减)。
表2.3 MessageBox()选项
─────────────────────────────────
标志 描述
─────────────────────────────────
下列设置控制信息框的一般类型
───────────┬─────────────────────
MB_OK │信息框含有一个按钮:OK,这是默认值
MB_OKCANCEL │信息框含有两个按钮:OK和Cancel
MB_RETRYCANCEL │信息框含有两个按钮:Retry和Cancel
MB_YESNO │信息框含有两个按钮:Yes和No
MB_YESNOCANCEL │信息框含有三个按钮:Yes、No和Cancel
MB_ABORTRETRYIGNORE│信息框含有三个按钮:Yes、No和Cancel
───────────┴─────────────────────
这一组控制在图标上添加一点“穷人的多媒体”
───────────┬─────────────────────
MB_ICONEXCLAMATION │信息框显示一个惊叹号图标
MB_ICONINFORMATION │信息框显示一个由圆圈中的小写字母I构成的图标
MB_ICONQUESTION │信息框显示一个问号图标
MB_ICONSTOP │信息框显示一个终止符图标
───────────┴─────────────────────
该标志组控制默认时高亮的按钮
───────────┬─────────────────────
MB_DEFBUTTONn │其中n是一个指示默认按钮的数字(1-4),从左
│到右计数
───────────┴─────────────────────
注意:还有其他的高级OS级标志,我们没有讨论。如果希望了解更多细节的话,可以通过编译器Win32 SDK的在线帮助来查阅。
可以同时使用表2.3中的值进行逻辑或运算,来创建一个信息框。一般情况下,只能从每一组中仅使用一个标志来进行或运算。
当然,和所有Win2 API函数一样,MessageBox()函数返回一个值业通知编程者所发生的事件。但在这个例子中谁关心这个呢?通常情况下,如果信息框是yes/no提问之类的情况的话,就希望知道这个返回值。表2.4列出了可能的返回值。
表2.4 MessageBox()的返回值
─────┬─────────────────────
值 │ 按钮选择
─────┼─────────────────────
IDABORT │Abort
IDCANCEL │Cancel
IDIGNORE │Ignore
IDNO │No
IDOK │OK
IDRETRY │Retry
IDYES │Yes
─────┴─────────────────────
最后,这个表已经毫无遗漏地列出了所有的返回值,正在已经完成了对我们第一个Windows程序——单击的逐行分析。