提示窗口相关配置

messagebox

该词条缺少基本信息栏词条分类,补充相关内容帮助词条更加完善!立刻编辑>>

MessageBox函式用于显示短资讯。虽然,MessageBox显示的小视窗不具有什么功能,实际上它被认为是一个对话方块。

C/C++Windows API函数

函数原型(本体)[1]

1//我们一般理解为:

2

3int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

4       //其实它是根据Unicode定义的

5      WINUSERAPI int WINAPI MessageBoxA(

6                    HWND hWnd ,

7                    LPCSTR lpText,

8                    LPCSTR lpCaption,

9                    UINT uType);

10       WINUSERAPI int WINAPI MessageBoxW(

11                    HWND hWnd ,

12                    LPCWSTR lpText,

13                    LPCWSTR lpCaption,

14                   UINT uType);

15       #ifdef UNICODE

16       #define MessageBox  MessageBoxW //如果用的是Unicode,就用MessageBoxW

17        #else

18       #define MessageBox  MessageBoxA

19       #endif

参数

hWnd:

消息框的拥有窗口。如果此参数为NULL,则消息框没有拥有窗口。[2]

lpText:

消息框的内容。如果用Unicode,则在文本两边添加

1TEXT(//sometext)

lpCaption:

消息框的标题。如果用Unicode,则在文本两边添加

1TEXT(//sometext)

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 #define MB_OK                       0x00000000L
2 #define MB_OKCANCEL                 0x00000001L
3 #define MB_ABORTRETRYIGNORE         0x00000002L
4 #define MB_YESNOCANCEL              0x00000003L
5 #define MB_YESNO                    0x00000004L
6 #define MB_RETRYCANCEL              0x00000005L
7  
8  
9 #define MB_ICONHAND                 0x00000010L
10 #define MB_ICONQUESTION             0x00000020L
11 #define MB_ICONEXCLAMATION          0x00000030L
12 #define MB_ICONASTERISK             0x00000040L
13  
14 #define MB_USERICON                 0x00000080L
15 #define MB_ICONWARNING              MB_ICONEXCLAMATION
16 #define MB_ICONERROR                MB_ICONHAND
17 #endif
18  
19 #define MB_ICONINFORMATION          MB_ICONASTERISK
20 #define MB_ICONSTOP                 MB_ICONHAND
21  
22 #define MB_DEFBUTTON1               0x00000000L
23 #define MB_DEFBUTTON2               0x00000100L
24 #define MB_DEFBUTTON3               0x00000200L
25 #if(WINVER,>,=,0x0400)
26 #define MB_DEFBUTTON4               0x00000300L
27 #endif,/*,WINVER,>,=,0x0400,*/
28  
29 #define MB_APPLMODAL                0x00000000L
30 #define MB_SYSTEMMODAL              0x00001000L
31 #define MB_TASKMODAL                0x00002000L
32 #define MB_HELP                     0x00004000L // Help Button
33 #endif,/*,WINVER,>,=,0x0400,*/
34  
35 #define MB_NOFOCUS                  0x00008000L
36 #define MB_SETFOREGROUND            0x00010000L
37 #define MB_DEFAULT_DESKTOP_ONLY     0x00020000L
38  
39 #define MB_TOPMOST                  0x00040000L
40 #define MB_RIGHT                    0x00080000L
41 #define MB_RTLREADING               0x00100000L

图标:

参数 含义
MB_ICONEXCLAMATION 一个惊叹号出现在消息框
MB_ICONWARNING 一个惊叹号出现在消息框
MB_ICONINFORMATION 一个,圆圈,中,小写,字母i组成的图标出现在消息框
MB_ICONASTERISK 一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION 一个问题标记图标出现在消息框
MB_ICONSTOP 一个停止消息图标出现在消息框
MB_ICONERROR 一个停止消息图标出现在消息框
MB_ICONHAND 一个停止消息图标出现在消息框

形态:

参数

含义

MB_APPLMODAL

在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失效,但是弹出窗口不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。

MB_SYSTEMMODAL

除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和MB_SYSTEMMODAL一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。

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_TOPMOSI

消息框用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_ICONHANDMB_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 #include <windows.h>
2 //切记!当调用<,windows,h>,时,不要调用MFC!(Afx,h)
3 intmain()
4 {
5     intresult = MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);
6     switch(result)            /*注意!使用Unicode应用TEXT包围字串*/
7 {
8         caseIDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;
9         caseIDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;
10 }
11 return0
12 }

第一步:弹出对话框。语句:

1int result = MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);


选择是:语句:

1case IDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;


选择否:语句:

1case IDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;


【MFC特例】

假如您创建了一个MFC工程,如果工程文档中有MainFrm.cpp的话,那么,本函数就被封装成了:

新函数原型

int MessageBox(

LPCTSTR lpszText,

LPCTSTR lpszCaption = NULL,

UINT nType = MB_OK

);

介绍

*************************************************以下内容引自msdn***********************************************(经翻译)

参数

lpszText

指向一个字符串包含要显示的消息。

lpszCaption

指向一个字符串包含

nType

指定消息框的内容和行为。

返回值

指定函数的结果。

下面的例子可以让我们对比两种函数的用法,两行代码的功能都是显示一个消息框,内容为“示例用法”

::MessageBox(NULL, "示例用法", "demo", MB_OK);

MessageBox("示例用法");//采用了一些C++的语法特性使用消息框用起来更顺手

*************************************************以下内容引自msdn(结束)***********************************(经翻译)

【VB方法】[3]

函数原型:MessageBox.Show(Text,Title,MessageBoxButtons,MessageBoxIcon ,MessageBoxDefaultButtons)

参数说明:

(1)Text:必选项,消息框的正文。

(2)Title:可选项,消息框的标题。

(3)MessageBoxButtons:可选项,消息框的按钮设置,默认只显示【确定】按钮。

OK――确定 OKCancel――确定和取消 AbortRetryIgnore――终止、重试和忽略

YesNoCancel――是、否和取消 YesNo――是和否 RetryCancel――重试和取消

(4)MessageBoxIcon:对话框中显示的图标样式,默认不显示任何图标。

Question――问号 Information、Asterisk――i号 Error、Stop、Hand――错误号

Warning、Exclamation――!号 None――不显示任何图标

(5)MessageBoxDefaultButtons:可选项,对话框中默认选中的按钮设置。

DefaultButton1――第1个button是默认按钮

DefaultButton2――第2个button是默认按钮

DefaultButton3――第3个button是默认按钮

备注:函数原型中蓝色字体部分的参数,可以通过点来获取其后面跟随的参数值。

参考资料:

2.

简要的Windows API函数大全 

http://see.xidian.edu.cn/cpp/html/782.html

3.

vb msgbox函数的使用方法(网友分享) 

http://bbs.csdn.net/topics/300138157

扩展阅读:

2.

C++Builder中MessageBox的基本用法

http://www.blogguy.cn/show-550-1.html

3.

详解MessageBox(),MsgBox函数的正确使用(网友分享)

http://www.vrbrothers.com/cn/qmacro/qkbase/Home/Detail/9ae94246-1671-4767…

词条标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值