C++ MessageBox的用法

c++游戏小技巧8:MessageBox弹窗 c++ 弹窗 阅读详情
AI摘要

本文介绍了C++中MessageBox函数的用法。先阐述其组成,包括函数原型、参数(如hWnd、lpText等),详细说明uType参数的构成,如按钮样式、图标样式等,还提及返回值代表的含义。接着举例说明如何使用,如纯文字弹窗、带图标弹窗及获取返回值,使用时需引入Windows.h头文件。

在使用软件的时候呢,经常会遇到很多很多的弹窗,像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。

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

    C++ WindowsAPI 教程:MessageBox函数详解(原创) Hello大家好,我又回来了!今天,小编想要给大家带来的内容时C++API非常常用的函数之一——MesssageBox。 说到MB,相信大多数追求用户界面的,用过几年(不一定要)C++的,应该都会用(仅是作者本人猜测) 本文为EricNTH的原创博客,转载请注明出处! 好了,废话不多说,我们开始! MessageBox所在头文件:<windows.h>。在<bits/stdc+... 阅读详情

    相关推荐

    c++ MessageBox()函数用法整理

    MessageBox 包含在头文件 中。MB_OK 是弹出窗口下的按键,在这里就是确认(OK)。另,MessageBox是有返回值的函数。格式参数中,图标和按键可以同时出现,中间用‘|’隔开。即MessageBox(句柄,内容,标题,格式)。格式也可以包括一些图标,如警告,提示等。一般地,句柄参数采用空NULL。当然也可以是其他的,见下表。

    yhylovec的博客 1837

    C++小技巧01:MessageBox弹窗函数

    第一次写博客,大家多多支持😁👍今天分享MessageBox函数

    FHY_pp的博客 6466

    JavaSpringBoot + VUE 相关开发环境配置合集

    1.Java环境-JDK安装 参照:Java基础1-环境篇:JDK安装与环境变量配置 Java基础1-环境篇:JDK安装与环境变量配置_第一段代码的博客-优快云博客_jdk 2.Web服务器-Tomcat安装 原创Java服务器Tomcat安装和配置 3.Maven(后面为了项目兼容性,使用了3.0.5版本) 原创Maven安装和配置(Maven3.0.5) 4.nginx 原创nginx轻量级Web服务器安装和配置 5 数据库mysql 原创数据库Mysql安装和配置 ...

    第一段代码的博客 3163

    c++中MessageBox弹窗的用法大全

    想必大家都知道,MessageBox函数是c语言中很常用且好玩的函数之一,那你知道它怎么用吗?其中,函数前面一个引号的内容,可以理解为是你的正文;后一个引号的内容,是你的标题;这是MessageBox函数的标准格式之一,本人喜欢用这种格式,注意函数的。MB_ABORTRETRYIGNORE:有三个按键,分别是。MB_RETRYCANCEL:有两个按键,MB_OKCANCEL:有两个按键,其实几个字符就能解决。MB_YESNO:有两个按键,

    LCR2025的博客 2万+

    【机器人开发】四足机械狗(并联结构)URDF建模与Simscape仿真全流程解析

    本文详细解析了四足机械狗(并联结构)从URDF建模到Simscape仿真的全流程开发。内容涵盖SolidWorks建模要点、URDF文件导出与优化、Matlab/Simscape环境搭建,以及并联机构特有的运动控制和步态规划实现,为机器人开发者提供了一套完整的解决方案。

    weixin_30642561的博客 529

    远程桌面(RDP)共享USB设备全攻略:不止Hyper-V,你的加密狗和CH340串口也能远程用

    本文详细介绍了远程桌面(RDP)共享USB设备的完整解决方案,包括加密狗和CH340串口设备的远程使用技巧。通过RemoteFX USB重定向技术,用户可以在远程会话中无缝使用本地USB设备,提升工作效率。文章涵盖企业级配置、典型设备实战案例及高级故障排除方法,是远程工作者的实用指南。

    weixin_42522964的博客 333

    【转】C/C++ MessageBox() 弹窗的用法

    if(MessageBox(NULL,("作者帅不帅"),("没有标题"),MB_YESNO | MB_ICONQUESTION) == IDYES)//判断你点的是不是按钮“是”if(MessageBox(NULL,("信息"),("标题"),MB_YESNO|MB_ICONINFORMATION) == IDYES) {//判断点击的按钮是不是 "是"MessageBox(NULL,("内容"),("标题"),MB_OK|MB_ICONINFORMATION);图标,黄色的三角形里有一个白色的!

    A1200266的博客 769

    【同等学力】01-逻辑符号表达

    F(x): x是确诊者,G(x):x有症状F(x): x是老人,G(x):x是宠物,L(x,y): x喜欢y。

    super_mochi1 1880

    C/C++ MessageBox() 弹窗的用法

    C语言 MessageBox() C++ MessageBox() MessageBox函数的用法 MessageBox C++ 弹窗 C语言 弹窗

    开发。小白 的博客 2万+

    【Envi风暴】Envi5.6安装图文教程(附Envi5.6完整版下载)

    【Envi风暴】Envi5.6与应用商店app store安装图文教程(附Envi5.6完整版下载)从文末网盘下载完整的ENVI5.6安装包,如下所示:双击envi56-win.exe,开始安装。将f__x64下的两个补丁文件拷贝到安装路径。将f__x86下的两个补丁文件拷贝到安装路径。

    智慧空间实验室 9197

    FCC 首个扫地机器人豁免落地,Matic 凭什么抢先?

    Matic获FCC首个扫地机器人豁免,实为提前布局的合规姿态。其产品在美国组装,并采用已认证射频模组,虽未达65%美国成分门槛,但已具备“本土制造”优势。豁免本质是对既有合规状态的确认,而非解救。此举在商业上放大品牌价值,抢占“安全、合规、本土”叙事高地,凸显供应链安全正取代技术标准成为监管核心。未来合规成本将攀升,规则主导权仍在FCC手中。

    致力于lidar应用开发 98

    c++中的messagebox()详细用法

    1.MessageBox("这是一个最简单的消息框!"); 2.MessageBox("这是一个有标题的消息框!","标题"); 3.MessageBox("这是一个确定 取消的消息框!","标题", MB_OKCANCEL ); 4.MessageBox("这是一个警告的消息框!","标题", MB_ICONEXCLAMATION ); 5.MessageBox("这是一个两种属性...

    weixin_30747253的博客 273

    yolov8涨点系列之轻量化主干网络替换

    yolov8涨点系列之轻量化主干网络替换,以EfficientVit为例

    zhang1379的博客 2887

    C++中MessageBox的常见用法

    c++中MessageBox的常见用法

    网络资源是无限的 1万+

    paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

    PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

    a486259的博客 1915

    IDEA的使用指南

    IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

    C++Builder中MessageBox的基本用法

    【函数】 MessageBox( Text, Title, nType); 【函数说明】 弹出一个消息框。 【语法】 参数: Text ,消息框的正文; Title ,消息框的标题; nType ,消息框的类型。 返回值:,用户在消息框上点击关闭时的选择的按钮

    ujn304的专栏 3736

    WINCC7.3破解文件

    WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

    C++ 控制台窗口中MessageBox() 的用法

    例程: #include <iostream> #include <windows.h> using namespace std; int main() { for(int i=1;i<=2;i++){ i = MessageBox(NULL, "输出内容?", "对话框标题", MB_OKCANCEL); if(i==IDOK) cout<<"IDOK = "<<i<<endl; if(i==IDCANCEL) c.

    汉阳Hann's Home 4687

    Probability and Statistics - 4th edition

    Probability and Statistics - 4th edition

    假人有限元模型

    假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

    C++的MessageBox()用法

    MB_OK 可以换成 MB_YESNO。MessageBox代码。

    KJ_RY的博客 470

    C++的MessageBox用法

    Messagebox怎么用?单击>此处

    Iamsupercoder的博客 438

    C++播放音乐和MFC的messagebox用法

    C++播放音乐 和MFC messagebox()函数不能使用的问题 文章目录C++播放音乐 和MFC messagebox()函数不能使用的问题前言一、使用mciSendString播放音乐二、MFC messagebox()函数1.引入 前言 学编程有了一定的经验 那么要做交互性的程序 就需要一些工具 下面分享C++播放音乐和MFC图形界面的使用。 提示:以下是本篇文章正文内容,下面案例可供参考 一、使用mciSendString播放音乐 示例:mciSendString(L"play son

    CodeShark的博客 751

    C++中MessageBox()的详细用法

    1.MessageBox("这是一个最简单的消息框!"); 2.MessageBox("这是一个有标题的消息框!","标题"); 3.MessageBox("这是一个确定 取消的消息框!","标题", MB_OKCANCEL ); 4.MessageBox("这是一个警告的消息框!","标题", MB_ICONEXCLAMATION ); 5.M

    soboer 4373
    上一篇: Windows 11安装镜像的获取(UUP dump)
    下一篇: 百度网盘不限速下载_IDM下载百度网盘文件(网盘直链)
    怎么没有名字注册了啊
    博客等级 码龄2年 303粉丝 85原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

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

    抵扣说明:

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

    余额充值