C++ MessageBox的用法

在使用软件的时候呢,经常会遇到很多很多的弹窗,像Photoshop里的提示弹窗、VMware里的报错弹窗等等。我们也可以自己制作弹窗,让自己的代码运行起来更漂亮。

Step1:MessageBox函数的组成

函数原型

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

    参数介绍

    1. hWnd:此为父窗口的句柄。若设为NULL,消息框将不会有所有者窗口。
    2. lpText:这是要在消息框里显示的文本内容,其类型为字符串。
    3. lpCaption:即消息框标题栏所显示的文本,同样为字符串类型。
    4. uType:用于指定消息框的按钮组合、图标样式以及默认按钮等行为,是一个UINT类型的参数。

    uType 参数的构成

    uType参数是由按钮样式(Buttons)、图标样式(Icons)、默认按钮(Default Button)和其他选项(Options)这几部分通过按位或(|)组合而成的。

    按钮样式(Buttons)
    • MB_OK:消息框仅显示一个 “确定” 按钮,这是默认设置。
    • MB_OKCANCEL:会显示 “确定” 和 “取消” 两个按钮。
    • MB_ABORTRETRYIGNORE:显示 “中止”“重试” 和 “忽略” 三个按钮。
    • MB_YESNOCANCEL:有 “是”“否” 和 “取消” 三个按钮可供选择。
    • MB_YESNO:只显示 “是” 和 “否” 两个按钮。
    • MB_RETRYCANCEL:显示 “重试” 和 “取消” 按钮。
    图标样式(Icons)
    • MB_ICONINFORMATION:消息框会显示一个带有 “i” 的圆形信息图标。
    • MB_ICONWARNING:显示一个黄色三角形感叹号警告图标。
    • MB_ICONERROR:展示一个红色圆形叉号错误图标。
    • MB_ICONQUESTION:显示一个问号图标,但在现代应用程序中不太推荐使用。
    • MB_ICONSTOP:效果等同于MB_ICONERROR
    • MB_ICONEXCLAMATION:效果等同于MB_ICONWARNING
    默认按钮(Default Button)
    • MB_DEFBUTTON1:将第一个按钮设为默认按钮,比如在 “确定”“取消” 组合中,默认的就是 “确定” 按钮。
    • MB_DEFBUTTON2:把第二个按钮设为默认按钮。
    • MB_DEFBUTTON3:让第三个按钮成为默认按钮。
    • MB_DEFBUTTON4:将第四个按钮设为默认按钮。
    其他选项(Options)
    • MB_APPLMODAL:消息框为应用程序模态,在用户响应之前,用户无法与同一应用程序的其他窗口进行交互。
    • MB_SYSTEMMODAL:属于系统模态消息框,会暂停所有应用程序的运行,直到用户对消息框做出响应。
    • MB_TASKMODAL:和MB_APPLMODAL类似,但当父窗口句柄为NULL时使用。
    • MB_SETFOREGROUND:使消息框成为前台窗口。
    • MB_TOPMOST:让消息框始终显示在其他窗口的顶部。
    • MB_RIGHT:文本采用右对齐方式。
    • MB_RTLREADING:按照从右到左的阅读顺序显示文本。

    返回值

    消息框的返回值是一个整数,代表用户点击的按钮,具体如下:

    • IDOK:用户点击了 “确定” 按钮。
    • IDCANCEL:用户点击了 “取消” 按钮。
    • IDABORT:用户选择了 “中止”。
    • IDRETRY:用户点击了 “重试”。
    • IDIGNORE:用户选择了 “忽略”。
    • IDYES:用户点击了 “是”。
    • IDNO:用户选择了 “否”。

    Step2:如何使用MessageBox

    前面每一个参数的功能都详细讲解了,这里就举几个简单的例子,其他的都是类似的

    注意:MessageBox需要额外引入头文件Windows.h,即使是bits/stdc++.h万能头文件也是如此。

    弹窗一:纯文字

    MessageBox(NULL,"怎么没有名字注册了啊!","提示",MB_OK); 

    这段代码其实很简单

    1. hWnd:这里只有一个弹窗,要么是父对象,要么父子对象都不是,所以为NULL
    2. lpText:显示的消息
    3. lpCaption:弹窗标题
    4. uType:只有一个按钮:确定,无图标

    下面有几点需要注意

    • 不管有无图标,有无父、子对象,后面的按钮参数都是必填的!
    • MessageBox函数的M和B一定要大写!
    • 在VS里面如果没有using namespace std; 提示词双引号前面要加上大写的L
    • MessageBox(NULL,L"怎么没有名字注册了啊!",L"提示",MB_OK);  // Visual C++

    弹窗二:带图标

    MessageBox(NULL,"怎么没有名字注册了啊!","提示",MB_OK|MB_ICONERROR);  // 错误图标

    MessageBox(NULL,"怎么没有名字注册了啊!","提示",MB_OK|MB_ICONEXCLAMATION); // 警告图标  

    MessageBox(NULL,"怎么没有名字给我注册了啊!","提示",MB_OK|MB_ICONQUESTION); // 询问图标

    MessageBox(NULL,"怎么没有名字给我注册了啊!","提示",MB_OK|MB_ICONASTERISK); // 消息图标

    弹窗三:返回值

    if(MessageBox(NULL,"怎么没有名字注册了啊!","提示",MB_OK|MB_ICONERROR) == IDOK) {
        cout << "hhh";
    }

    这段代码的意思是弹出一个内容为“怎么没有名字注册了啊!”,标题为“提示”,只有一个确定按钮,错误图标,如果按下确定,输出hhh。

    好了今天就讲到这,其他的函数也是类似的用法,制作不易,感谢看到这。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值