MessageBox()
书籍:《windows程序设计(第五版)》的开始->编写第一个WINDOWS程序
环境:visual studio 2022
内容:编写第一个WINDOWS程序
一、函数原型与参数解析
int WINAPI MessageBox(
HWND hWnd, // 窗口句柄
LPCTSTR lpText, // 消息内容
LPCTSTR lpCaption, // 标题
UINT uType // 类型参数
);
- **
hWnd
**:指定消息框的父窗口句柄。若为NULL
,则消息框无父窗口,独立显示。 - **
lpText
**:消息内容字符串,使用TEXT()
宏自动适配 ANSI/Unicode 编码。 - **
lpCaption
**:消息框标题,同样通过TEXT()
宏处理编码。 - **
uType
**:控制消息框的按钮、图标等行为的标志组合。此处0
对应MB_OK
,仅显示“确定”按钮。
二、TEXT()
宏的作用
TEXT("Hello, Windows 98!")
和 TEXT("HelloMsg")
通过以下机制实现编码兼容性:
- 条件编译:
#ifdef UNICODE #define TEXT(x) L##x // 生成 L"字符串"(Unicode) #else #define TEXT(x) x // 生成 "字符串"(ANSI) #endif
- 自动适配:
根据项目配置(如是否启用 Unicode 字符集),TEXT()
宏会生成对应编码的字符串,避免手动编写两种版本的代码。
三、参数具体含义
-
**
NULL
(父窗口句柄)**
表示消息框无父窗口,独立于其他窗口显示。适用于全局提示或无关联窗口的场景。 -
**
TEXT("Hello, Windows 98!")
(消息内容)**
显示的文本内容,TEXT()
确保在不同编码环境下正确显示(如中文系统或英文系统)。 -
**
TEXT("HelloMsg")
(标题)**
消息框的标题栏文本,同样通过TEXT()
处理编码。 -
**
0
(类型参数)**
对应MB_OK
标志(值为0
),表示消息框仅显示一个“确定”按钮,无其他选项或图标。
四、消息框行为与返回值
- 按钮行为:用户点击“确定”后,消息框关闭,程序继续执行。
- 返回值:若用户点击“确定”,函数返回
IDOK
(值为1
);若消息框被强制关闭(如按Alt+F4
),返回IDCANCEL
(值为2
)。
通过上述解析,该代码实现了在 Windows 系统中弹出最简消息框的功能。实际开发中,可根据需求调整按钮、图标及编码配置。