常见宏定义
| Win32类型 | 本质 | 说明 | 记忆方法 |
|---|---|---|---|
| HANDLE | void | 所有内核对象的句柄(文件、进程、线程、事件、互斥体、注册表键) | - |
| DWORD | unsigned long (32位) | 无符号整数:错误码、计数、大小、标志位 | Double WORD (WORD=16位) |
| BOOL | int | 布尔值:0=FALSE,非0=TRUE | 与C++中的bool同义,但是宏定义(宏定义大写) |
| LPCWSTR | const wchar_t* | 只读Unicode字符串 | Long Pointer of Const Wide String |
| LPWSTR | wchar_t* | 可修改Unicode字符串 | Long Pointer of Wide String |
| WORD | unsigned short (16位) | 16位无符号整数 | - |
| QWORD | unsigned __int64 (64位) | 64位无符号整数 | |
| UINT | unsigned int (32位) | 无符号整数,与DWORD本质相同 | Unsigned Int |
| LONG | long (32位) | 有符号整数 | - |
| ULONG | unsigned long (32位) | 无符号长整数 | Unsigned Long |
| INT | int (32位) | 有符号整数 | 与C/C++一致 |
| WCHAR | wchar_t (16位) | Unicode字符 | Wide Char |
| CHAR | char (8位) | ANSI字符 | 与C/C++一致 |
| LPVOID | void* | 无类型指针 | 任意缓冲区中使用。void*常指向缓冲区。Long Pointer Void |
| LPCVOID | const void* | 只读无类型指针(输入缓冲区用) | Long Pointer Constant Void |
字符串变体
| Win32类型 | 本质 | 使用场景 |
|---|---|---|
| CHAR | char(ANSI (8位)) | 旧版本代码中 |
| WCHAR | wchar_t(Unicode (16位) | 现代代码中 |
| LPSTR | char*(ANSI) | 旧版本代码中 |
| LPCSTR | const char*(ANSI) | 旧版本代码中 |
| LPWSTR | wchar_t*(Unicode) | 现代代码中,需要修改时 |
| LPCWSTR | const wchar_t*(Unicode) | 现代代码中,最常用 |
| LPTSTR | TCHAR*(条件编译) | 向下兼容时 |
| LPCTSTR | const TCHAR*(条件编译) | 向下兼容时 |
大小明确的整数
| Win32类型 | C++标准类型 (stdint.h) | 位宽 | 说明 |
|---|---|---|---|
| INT8 | int8_t | 8位有符号 | |
| UINT8 | uint8_t | 8位无符号 | |
| INT16 | int16_t | 16位有符号 | |
| UINT16 | uint16_t | 16位无符号 | |
| INT32 | int32_t | 32位有符号 | |
| UINT32 | uint32_t | 32位无符号 | |
| INT64 | int64_t | 64位有符号 | |
| UINT64 | uint64_t | 64位无符号 | |
| LONG32 | int32_t | 32位有符号 | 明确32位,跨平台时替代LONG |
| ULONG32 | uint32_t | 32位无符号 | |
| LONG64 | int64_t | 64位有符号 | |
| ULONG64 | uint64_t | 64位无符号 | |
| SIZE_T | size_t | 指针宽度(32/64) | sizeof 返回值类型 |
| SSIZE_T | ssize_t | 有符号版 SIZE_T | POSIX扩展,Windows也有 |
常见错误码
| 宏 | 值 | 说明 |
|---|---|---|
| ERROR_SUCCESS | 0 | 成功 |
| ERROR_FILE_NOT_FOUND | 2 | 文件未找到 |
| ERROR_PATH_NOT_FOUND | 3 | 路径未找到 |
| ERROR_ACCESS_DENIED | 5 | 访问被拒绝 |
| ERROR_INVALID_HANDLE | 6 | 句柄无效 |
| ERROR_NOT_ENOUGH_MEMORY | 8 | 内存不足 |
| ERROR_FILE_EXISTS | 80 | 文件已存在 |
| ERROR_INVALID_PARAMETER | 87 | 参数无效 |
| ERROR_MORE_DATA | 234 | 缓冲区不足 |
| ERROR_NO_MORE_ITEMS | 259 | 无更多项(枚举结束) |
常用宏与常量
| 宏/常量 | 值 | 说明 |
|---|---|---|
| NULL | 0 | 空指针 |
| INVALID_HANDLE_VALUE | (HANDLE)-1 | CreateFile失败返回值 |
| TRUE / FALSE | 1 / 0 | BOOL常量 |
| MAX_PATH | 260 | 传统路径最大长度 |
| INFINITE | 0xFFFFFFFF | 无限等待 |
| WAIT_TIMEOUT | 258 | 等待超时 |
| WAIT_FAILED | 0xFFFFFFFF | 等待失败 |
消息与回调(GUI编程) (高级)
| Win32类型 | 本质 | 说明 |
|---|---|---|
| WPARAM | UINT_PTR (32/64位) | 消息参数1:字大小的参数 |
| LPARAM | LONG_PTR (32/64位) | 消息参数2:长参数 |
| LRESULT | LONG_PTR | 消息返回值 |
| ATOM | WORD (16位) | 原子表索引(字符串注册表) |
| HRESULT | long (32位) | COM调用返回码(0=成功) |
