贝利信息

C++ 怎么调用Windows API C++ MessageBox弹窗函数调用示例【开发】

日期:2026-01-26 00:00 / 作者:尼克
MessageBox 函数需包含 Windows.h 头文件,原型为 int MessageBox(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);必须用宽字符串 L"" 且在主线程调用,返回值为按钮 ID(如 IDYES),不可硬编码数字比较。

MessageBox 函数原型和头文件怎么

调用 MessageBox 前必须包含 Windows.h,否则编译器不认识这个函数。它不是 C++ 标准库函数,而是 Windows SDK 提供的 C 风格 API,所以参数类型全是 Win32 类型(比如 LPCWSTR 而不是 std::wstring)。

常见错误是直接传 std::string 或字面量字符串(如 "Hello")导致编译失败或乱码——因为默认项目启用了 Unicode 字符集,MessageBox 实际展开为 MessageBoxW,只接受宽字符。

最简可用的 MessageBox 调用代码

不需要窗口句柄也能弹窗,把第一个参数设为 NULL 即可。下面这段代码在控制台或 GUI 项目里都能直接运行:

#include 

int main() {
    MessageBox(NULL, L"操作已完成", L"提示", MB_OK | MB_ICONINFORMATION);
    return 0;
}

注意:MB_OK | MB_ICONINFORMATION 是位或组合的标志,不是加法;MB_OK 表示只显示“确定”按钮,MB_ICONINFORMATION 加个信息图标。其他常用标志包括 MB_YESNOMB_ICONWARNINGMB_ICONERROR

立即学习“C++免费学习笔记(深入)”;

怎么获取用户点击了哪个按钮

MessageBox 返回值是 int,对应用户点击的按钮 ID,不是布尔值。比如用户点“是”,返回 IDYES;点“否”,返回 IDNO;点“确定”,返回 IDOK

常见崩溃或无响应原因

多数问题出在字符串编码和线程模型上:

真正要注意的其实是上下文:它是个阻塞式 API,弹出后当前线程会挂起,直到用户关闭窗口。别在性能敏感路径或网络回调里滥用。