C语⾔基础MessageBox(......)⽤法详解
MessageBox()
  功能显⽰⼀个消息对话框。
  语法MessageBox(text,title{,icon{,button{,default}}})
  参数title:string类型,指定消息对话框的标题text:指定消息对话框中显⽰的消息,该参数可以是数值数据类型、字符串或boolean 值icon:Icon枚举类型,可选项,指定要在该对话框左侧显⽰的图标button:Button枚举类型,可选项,指定显⽰在该对话框底部的按钮default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号⾃左向右依次计数,缺省值为1,如果该参数指定的编号超过了显⽰的按钮个数,那么MessageBox()函数将使⽤缺省值返回值Integer。函数执⾏成功时返回⽤户选择的按钮编号(例如1、2、3等),发⽣错误时返回-1。如果任何参数的值为NULL,MessageBox()函数返回NULL。
  ⽤法:当你的应⽤程序需要显⽰⼀段简短信息(⽐如显⽰出错、警告等信息)时,没有必要⾃⼰从头创建窗⼝、安排控件,使⽤MessageBox()函数既简单⼜⽅便。⽤户只有响应该窗⼝后,程序才能继续运⾏下去。MessageBox()函数的icon参数指定显⽰在窗⼝中的图标,它是枚举类型,可能取值为: 取值 图
标Information! StopSign! Exclamation! Question! None! ⽆图标其中Information!是Icon 参数的缺省值。Button参数指定在窗⼝中显⽰哪些按钮,有效取值为:取值中⽂Windows 95下显⽰OK!“确定”按钮OKCancel!“确定”、“取消”按钮YesNo!“是”、“否”按钮 YesNoCancel!“是”、“否”、“取消”按钮RetryCancel!“重试”、“取消”按钮AbortRetryIgnore!“终⽌”、“重试”、“忽略”按钮
  函数功能:该函数创建、显⽰、和操作⼀个消息框。消息框含有应⽤程序定义的消息和标题,加上预定义图标与Push(下按)按钮的任何组合。
SDK中的简单说明:
//MessageBox (句柄, 显⽰内容,标题,MB_OK) ;
句柄可以为NULL,表⽰当前窗体的句柄.
最后⼀个参数是显⽰在提⽰框中的按钮类型:
MB_ABORTRETRYIGNORE
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_OK
可选任⼀标志。
以下是详细介绍:
MessageBox (句柄, 显⽰内容,标题,MB_OK) ;
句柄可以为NULL,表⽰当前窗体的句柄.
最后⼀个参数是显⽰在提⽰框中的按钮类型:
MB_ABORTRETRYIGNORE
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_OK
可选任⼀标志。
  函数原型:int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT UType);
  参数:
  hWnd:标识将被创建的消息框的拥有窗⼝。如果此参数为NULL,则消息框没有拥有窗⼝。
  lpText:指向⼀个以NULL结尾的、含有将被显⽰的消息的字符串的指针。
  lpCaption:指向⼀个以NULL结尾的、⽤于对话框标题的字符串的指针。
  uType:指定⼀个决定对话框的内容和⾏为的位标志集。此参数可以为下列标志组中标志的组合。
  指定下列标志中的⼀个来显⽰消息框中的按钮,标志的含义如下。
  MB_ABORTRETRYIGNORE:消息框含有三个按钮:Abort,Retry和Ignore。
  MB_OK:消息框含有⼀个按钮:OK。这是缺省值。
  MB_OKCANCEL:消息框含有两个按钮:OK和Cancel。
  MB_OKCANCEL:消息框含有两个按钮:OK和Cancel。
  MB_RETRYCANCEL:消息框含有两个按钮:Retry和Cancel。
  MB_YESNO:消息框含有两个按钮:Yes和No。
  MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel。
  指定下列标志中的⼀个来显⽰消息框中的图标:标志的含义如下。
  MB_ICONEXCLAMATION:
  MB_ICONWARNING:⼀个惊叹号出现在消息框。
  MB_ICONINFORMATION:
  MB_ICONASTERISK:⼀个圆圈中⼩写字母i组成的图标出现在消息框。
  MB_ICONQUESTION:⼀个问题标记图标出现在消息框。
  MB_ICONSTOP:
  MB_ICONERROR:
  MB_ICONHAND:⼀个停⽌消息图标出现在消息框。
  指定下列标志中的⼀个来显不缺省的按钮:标志的含义如下。
  MB_DEFBUTTON1:第⼀个按钮为缺省按钮。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4没有被指定,则MB_DEFBUTTON1为缺省值。
  MB_DEFSUTTON2;第⼆个按钮为缺省按钮。
  MB_DEFBUTTON3:第三个按钮为缺省按钮。
  MB_DEFBUTTON4:第四个按钮为缺省按钮。
  指定下列标志中的⼀个来显⽰对话框的形态:标志的含义如⼘。
  MB_APPLMODAL:在hwnd参数标识的窗⼝中继续⼯作以前,⽤户⼀定响应消息框。但是,⽤户可以移动到其他线程的窗⼝且在这些窗⼝中⼯作。根据应⽤程序中窗⼝的层次机构,⽤户则以移动到线程内的其他窗⼝。所有母消息框的⼦窗⼝⾃动地失效,但是弹出窗⼝不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。
  MB_SYSTEMMODAL:除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和WS_EX_TOPMOST⼀样。⽤系统模态消息框来改变各种各样的⽤户,主要的损坏错误需要⽴即注意(例如,内存溢出)。如果不是那些与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:消息框变为前景窗⼝。在内部系统为消息个调⽤SetForegrundWindow函数。
  MB_TOPMOSI:消息框⽤WS_EX_TOPMOST窗⼝类型来创建MB_SERVICE_NOTIFICATION。
  Windows NT:调⽤程序是⼀个通知事件的⽤户的服务程序。函数在当前活动桌⾯上显⽰⼀个消息框,即使没有⽤户登记到计算机。  如果设置了此参数,则hwnd参数⼀定为NULL。所以消息框可以出现在⼀个桌⾯上⽽不是桌⾯响应参数hwnd。
  对于Windows NT 4.0,MB_SERVICE_NOTIFICATION的值已经改变。对于旧的和新的值,请参见WINUSER。
  Windows NT 4.O通过把旧值映射到MessageBox和MessageBoxEx执⾏中的新值,为先存在的服务程序提供逆兼容。此映射只为有了版本数⽬的可执⾏程序⽽做。
c++string类型
  为了建⽴⼀个⽤MB_SERVICE_NOTIFICATION的服务器,且可以在Windows NT 3.X和Window NT 4.0上执⾏,可有两种选择。在连接时间,指定⼀个版本数⽬⼩于4.0的版本,或在连接时间,指定⼀个4.0版本。在运⾏时间,⽤函数GetVersionEx来检测系统版本,然后在Windows NT 3.X上⽤MB_SERVICE_NOTIFICATION_NT 3.x来运⾏和在Windows NT 4.0上⽤MB_SERVICE_NOTIFICAION来运⾏。MB_SERVCE_NOTIFICATION_NT3.x(WindowNT)此值响应于为WindowNT3.51的MB_SERVICE_NOTIFICAION
  定义的值。
  返回值:如果没有⾜够的内存来创建消息框,则返回值为零。如果函数调⽤成功,则返回值为下列对话框返回的菜单项⽬值中的⼀个:  IDABORT:Abort 按钮被选中。IDCANCEL:Cancel按钮被选中。IDIGNORE:Ignore按钮被选中。
  IDNO:NO按钮被选中。IDOK:OK按钮被选中。IDRETRY:RETRY按钮被选中。
  IDYES:YES按钮被选中。
  如果⼀个消息框有⼀个Cancel按钮,且如果Esc键被按下或Cancel键被选择,则函数返回IDCANCEL值。如果消息框没有Cancel按钮,则按Esc键没有作⽤。
  备注:当创建⼀个系统模态消息框来表⽰系统在内存的低端中时,由lpTeXt和lpCaption参数指向的字符串不应该从⼀个资源⽂件中取出,因为试图装载此资源可能导致失败。
  当⼀个应⽤程序调⽤MessageBox,且为uType参数指定MB_ICONHAND和MB_SYSTEMMODAL标志时,系统不管可⽤内存为多
  当⼀个应⽤程序调⽤MessageBox,且为uType参数指定MB_ICONHAND和MB_SYSTEMMODAL标志时,系统不管可⽤内存为多少,直接显⽰结果消息框。当这些标志被指定,系统把消息框⽂本的长度局限于三⾏。系统不能⾃动截断要填到消息框的⾏,但是消息字符串⼀定含有回车换⾏,以在合适的位置换⾏。
  如果在对话框出现的的同时创建了消息框,则可使⽤对话框的句柄作为hwnd参数,hwnd参数不应该标识⼀个⼦窗⼝,例如对话框中的⼀个控制。
  Windows 95:系统可以⽀持最⼤达16364个窗⼝句柄。
  Windows CE:Windows CE 不⽀持uType参数的下列值:
  MB_STSTEMMODAL;MB_TASKMODAL;MB_HELP;MB_RTLREADING;MB_DEFAULT_DESKTOP_ONLY;
  MB_SERVICE_NOTIFICATION;MB_USERICON。
  不⽀持下列返回值:IDCLOSE;IDHELP。
  速查:Windows:3.1及以上版本:Windows:95及以上版本;Windows:1.0及以上版本;头⽂件:Winuser.h;库⽂件:
USer32.lib;URicode:在Windows NT上实现为Unicode和ANSI两种版本。
我的⼀段代码:
L1: int ret=MessageBox(NULL,TEXT("你是好⼈吗?"),TEXT("CHOOSE"),MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)
{int ret2=MessageBox(NULL,TEXT("你看你就不像⼀个好⼈!"),TEXT("要说实话哟!"),MB_OK|MB_ICONWARNING);
if(ret2==IDOK)
MessageBox(NULL,TEXT("开始格式化C盘!哈哈"),TEXT("骗⼈了吧!"),MB_OK);
}
else
{
int ret3=MessageBox(NULL,TEXT("尝试把你变成好⼈失败,是否重试呢?"),TEXT("要做好⼈吗?"),MB_OK|MB_RETRYCANCEL);  if(ret3==IDRETRY) goto L1;
else MessageBox(NULL,TEXT("坏蛋可以啦!"),TEXT("哎真让⼈替你悲哀呀"),MB_OK);
}
截图效果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。