MessageBox函数
MessageBox显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。
int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType );
第一个参数HWND hWnd Handle to the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window.
第二个参数LPCTSTR lpText 用来表示需要显示的内容
第三个参数 LPCTSTR lpCaption 用来显示窗口的标题
第四个参数 UINT uType 用来显示按键的类型可以用 | 运算符连接表示同时显示这几个按钮
uType参数
按钮:
按钮参数
|
含义
|
MB_OK
|
默认值。有一个确认按钮在里面。
|
MB_YESNO
|
有是和否在里面。
|
MB_ABORTRETRYIGNORE
|
有Abort(放弃),Retry(重试)和Ignore(跳过)
|
MB_YESNOCANCEL
|
消息框含有三个按钮:Yes,No和Cancel
|
MB_RETRYCANCEL
|
有Retry(重试)和Cancel(取消)
|
MB_OKCANCEL
|
消息框含有两个按钮:OK和Cancel
|
附:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//按钮
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
//图标
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
#define MB_USERICON 0x00000080L
//图标声明
#define MB_ICONWARNINGMB_ICONEXCLAMATION
#define MB_ICONERRORMB_ICONHAND
#define MB_ICONINFORMATIONMB_ICONASTERISK
#define MB_ICONSTOPMB_ICONHAND
//默认按钮声明
#define MB_DEFBUTTON1 0x00000000L
#define MB_DEFBUTTON2 0x00000100L
#define MB_DEFBUTTON3 0x00000200L
#if(WINVER>=0x0400)
#define MB_DEFBUTTON4 0x00000300L//如果支持第四个MessageBox按钮的话,定义DEFButton4
#endif
//对话框模型定义
#define MB_APPLMODAL 0x00000000L
#define MB_SYSTEMMODAL 0x00001000L
#define MB_TASKMODAL 0x00002000L
#define MB_HELP 0x00004000L//是否拥有帮助按钮
//特殊声明
#define MB_NOFOCUS 0x00008000L
#define MB_SETFOREGROUND 0x00010000L
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
#define MB_TOPMOST 0x00040000L
#define MB_RIGHT 0x00080000L
#define MB_RTLREADING 0x00100000L
|
图标:
参数 | 含义 |
MB_ICONEXCLAMATION
| 一个惊叹号出现在消息框 |
MB_ICONWARNING
| 一个惊叹号出现在消息框 |
MB_ICONINFORMATION
| 一个圆圈中小写字母i组成的图标出现在消息框 |
MB_ICONASTERISK
| 一个圆圈中小写字母i组成的图标出现在消息框 |
MB_ICONQUESTION
| 一个问题标记图标出现在消息框 |
MB_ICONSTOP
| 一个停止消息图标出现在消息框 |
MB_ICONERROR
| 一个停止消息图标出现在消息框 |
MB_ICONHAND
| 一个停止消息图标出现在消息框 |
形态:
参数
|
含义
|
MB_APPLMODAL
| |
MB_SYSTEMMODAL
| |
MB_TASKMODAL
|
如果参数hwnd为NULL的话,那么除了所有属于当前线程高层次的窗口失效外,MB_TASKMODALL和MB_APPLMODAL一样。当调用应用程序或库没有一个可以得到的
窗口句柄时,使用此标志。但仍需要阻止输入到调用线程的其他窗口,而不是搁置其他线程。
|
其他:
标志
|
含义
|
MB_DEFAULT_DESKTOP_ONLY
| |
MB_HELP
|
把一个Help按钮增加到
消息框。选择Help按钮或按F1产生一个Help事件。
|
MB_RIGHT
|
文本为右调整
|
MB_RTLREADING
|
用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。
|
MB_SETFOREGROUND
|
消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。
|
MB_TOPMOST
|
消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。
|
返回值
ID
|
选择了……
|
IDOK(1)
|
OK
|
IDCANCEL(2)
|
CANCEL
|
IDABORT(3)
|
ABORT
|
IDRETRY(4)
|
RETRY
|
IDIGNORE(5)
|
IGNORE
|
IDYES(6)
|
YES
|
IDNO(7)
|
NO
|
备注
通过将 uType 参数设置为相应的标志值,可以在消息框中系统图标,具体图标可参见MSDN网站。
图标
|
标志位值
|
MB_ICONHAND,
MB_ICONSTOP,
或者
MB_ICONERROR
| |
MB_ICONQUESTION
| |
MB_ICONEXCLAMATION 或者
MB_ICONWARNING
| |
MB_ICONASTERISK 或者
MB_ICONINFORMATION
|
添加两个从右到左标记 (RLMs),Unicode 格式字符中用 U+200F表示。在消息框显示字符串的开头被由 MessageBox 渲染引擎解释,以致造成 MessageBox 的阅读顺序,呈现为从右向左 (RTL) 。
当您使用一个系统模式消息框指示时,当系统内存不足时,由 lpText 和 lpCaption 的参数的字符串不应被从资源文件,因为加载资源的尝试可能会失败。
如果在一个对话框存在时创建一个消息框,则使用对话框的句柄作为hWnd 参数。hWnd参数不应指定为一个子窗口,就像对话框中的控件一样。
实例
1
2
3
4
5
6
7
8
9
10
11
12
|
#include<windows.h>
//切记!当调用<windows.h>时,不要调用MFC!(Afx.h)
int
main()
{
int
result = MessageBox( NULL , TEXT(
"这是对话框"
) , TEXT(
"你好"
) , MB_ICONINFORMATION|MB_YESNO);
switch
(result)
/*注意!使用Unicode应用TEXT包围字串*/
{
case
IDYES:MessageBox(NULL,TEXT(
"您选择了YES"
),TEXT(
"YES"
),MB_OK);
break
;
case
IDNO:MessageBox(NULL,TEXT(
"您选择了NO"
),TEXT(
"NO"
),MB_OK);
break
;
}
return
0;
}
|
第一步:弹出对话框。语句:
1
|
int
result = MessageBox(NULL,TEXT(
"这是对话框"
),TEXT(
"你好"
),MB_ICONINFORMATION|MB_YESNO);
|
选择是:语句:
1
|
case
IDYES:MessageBox(NULL,TEXT(
"您选择了YES"
),TEXT(
"YES"
),MB_OK);
break
;
|
选择否:语句:
1
|
case
IDNO:MessageBox(NULL,TEXT(
"您选择了NO"
),TEXT(
"NO"
),MB_OK);
break
;
|