当前位置: 首页 > news >正文

Windows API编程:核心数据类型与常量速查

常见宏定义

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=成功)