MessageBox~~详用

本文详细介绍了Windows API中的MessageBox函数,包括其函数原型、参数说明、返回值含义及其应用场景。展示了如何通过不同参数组合定制消息框样式,并提供了多种示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#inlcude"windows.h"
::MessageBox(NULL,"","",MB);
AfxMessageBox();







消息框的函数原型:
int MessageBox(HWND hwnd,LPCTSTR lpsztext,LPCSTR lpsztitle,UINT ustyle);

消息框函数有4 个参数:
第1个参数是父窗口的句柄。为NULL,说明消息框没有父窗口。
第2个参数就是一个指向要显示字符串的指针
第3个参数是消息框本身的标题。
第4个参数是指定消息框的内容和形为(即该消息框有几个按钮、文本对齐等状态,可以在20多个属性值中进行组合)

MessageBox的第4个参数可以是在WINUSER.H中定义的一组前缀以MB_开始的常数组合.
可以使用C语言的"或"(|)运算符将下面显示的三组中各选一个常数组合起来指定消息框的内容和形为: 

  显示哪些按钮:  
  #define   MB_OK                             0X00000000L  
  #define   MB_OKCANCEL                       0X00000001L  
  #define   MB_ABORTRERYGNORE                 0X00000002L    
  #define   MB_YESNOCANCEL                    0X00000003L    
  #define   MB_YESNO                          0X00000004L    
  #define   RERYCANCEL                        0X00000005L  
   
  焦点在哪个按钮上:
  #define   MB_DEFBUTTON1                   0X00000000L  
  #define   MB_DEFBUTTON2                   0X00000100L  
  #define   MB_DEFBUTTON3                   0X00000200L  
  #define   MB_DEFBUTTON4                   0X00000300L

  图示的外观:
  #define         MB_ICONHAND               0x00000010L
  #define         MB_ICONQUESTION           0x00000020L
  #define         MB_ICONEXCLAMATION        0x00000030L
  #define         MB_ICONASTERISK           0x00000040L

  图示的某些有替代名称:
  #define         MB_ICONWARNING                      MB_ICONEXCLAMATION
  #define         MB_ICONERROR                        MB_ICONHAND
  #define         MB_ICONINFORMATION                  MB_ICONASTERISK
  #define         MB_ICONSTOP                         MB_ICONHAND

示例:
MessageBox(NULL, "Hello, Windows!","hello", MB_OK );
MessageBox(NULL, "Hello, Windows!","HelloMsg",  MB_YESNO|MB_ICONEXCLAMATION) ;
MessageBox(NULL, "Hello, Windows!","HelloMsg",  MB_YESNO|MB_DEFBUTTON1) ;//表示窗口出来后焦点 focus落在Yes(第一个)按钮上   


    函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
 hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
 Text:欲显示的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的返回值为整数,用于对话框按钮的识别。
 2、类型常量
 对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
 (1)按钮组合常量
 MB_OK = $00000000;         //一个确定按钮
 MB_OKCANCEL = $00000001;      //一个确定按钮,一个取消按钮
 MB_ABORTRETRYIGNORE = $00000002;  //一个异常终止按钮,一个重试按钮,一个忽略按钮
 MB_YESNOCANCEL = $00000003;     //一个是按钮,一个否按钮,一个取消按钮
 MB_YESNO = $00000004;        //一个是按钮,一个否按钮
 MB_RETRYCANCEL = $00000005;     //一个重试按钮,一个取消按钮
 (2)缺省按钮常量
 MB_DEFBUTTON1 = $00000000;     //第一个按钮为缺省按钮
 MB_DEFBUTTON2 = $00000100;     //第二个按钮为缺省按钮
 MB_DEFBUTTON3 = $00000200;     //第三个按钮为缺省按钮
 MB_DEFBUTTON4 = $00000300;     //第四个按钮为缺省按钮
 (3)图标常量
 MB_ICONHAND = $00000010;        //“×”号图标
 MB_ICONQUESTION = $00000020;      //“号图标
 MB_ICONEXCLAMATION = $00000030;    //“号图标
 MB_ICONASTERISK = $00000040;      //“i”图标
 MB_USERICON = $00000080;        //用户图标
 MB_ICONWARNING = MB_ICONEXCLAMATION;  //“号图标
 MB_ICONERROR = MB_ICONHAND;      //“×”号图标
 MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
 MB_ICONSTOP = MB_ICONHAND;       //“×”号图标
 (4)运行模式常量
 MB_APPLMODAL = $00000000;    //应用程序模式,在未结束对话框前也能切换到另一应用程序
 MB_SYSTEMMODAL = $00001000;   //系统模式,必须结束对话框后,才能做其他操作
 MB_TASKMODAL = $00002000;    //任务模式,在未结束对话框前也能切换到另一应用程序
 MB_HELP = $00004000;       //Help Button
 3、函数返回值
 0            //对话框建立失败
 IDOK = 1        //按确定按钮
 IDCANCEL = 2      //按取消按钮
 IDABOUT = 3       //按异常终止按钮
 IDRETRY = 4       //按重试按钮
 IDIGNORE = 5      //按忽略按钮
 IDYES = 6        //按是按钮
 IDNO = 7        //按否按钮

    用法

1.    MessageBox("这是一个最简单的消息框!");
2.    MessageBox("
这是一个有标题的消息框!","标题"); 
3.    MessageBox("
这是一个确定 取消的消息框!","标题", MB_OKCANCEL ); 
4.    MessageBox("
这是一个警告的消息框!","标题", MB_ICONEXCLAMATION ); 
5.    MessageBox("
这是一个两种属性的消息框!","标题", 
              MB_ICONEXCLAMATION|MB_OKCANCEL );
6.    if(MessageBox("
一种常用的应用","标题
              " 
,MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)
        return;
注意:
以上消息框的用法是在CWnd的子类中的应用,如果不是,则要MessageBox(NULL,"ddd","ddd",MB_OK);MessageBox(hWnd,"ddd","ddd",MB_OK); hWnd为某窗口的句柄,或者直接用AfxMessageBox

二、在MessageBox中显示变量的值

      CString string;

      string.format("%d%s",m_age, m_address); //将变量组装到字符串中

       MessageBox(string,"消息框标题",消息框类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值