【WindowsAPI】总结 Windows 数据类型
*核心原则:**Windows 数据类型通过 typedef 隐藏底层实现,确保代码可移植性。使用 TCHAR 系列类型编写跨 ANSI/Unicode 的代码。处理句柄时需调用 CloseHandle() 等函数释放资源。优先使用HRESULT和SUCCEEDED()/FAILED() 处理错误。
·
【WindowsAPI】总结 Windows 数据类型
文章目录
一、基础数据类型
-
BOOL / BOOLEAN
- BOOL: typedef int BOOL(
4字节
,TRUE=1, FALSE=0) - BOOLEAN: typedef BYTE BOOLEAN(
1字节
,TRUE=1, FALSE=0) - 用途:逻辑判断,如函数返回值。
- BOOL: typedef int BOOL(
-
BYTE / WORD / DWORD
- BYTE: unsigned char(
1字节
,0~25
5) - WORD: unsigned short(
2字节
,0~65535
) - DWORD:
unsigned long
(4字节
,0~4294967295) - 用途:存储无符号整数,常见于资源大小、标志位。
- BYTE: unsigned char(
-
INT / UINT
- INT:
int
(4字节,-2^31 ~ 2^31-1) UINT
:unsigned in
t(4字节
,0~4294967295)- 用途:通用整数类型。
- INT:
-
LONG / ULONG
- LONG: long(4字节,同 INT)
- ULONG: unsigned long(4字节,
同 UINT
)
-
LONGLONG / ULONGLONG
- LONGLONG: __int64(8字节,-2^63 ~ 2^63-1)
- ULONGLONG: unsigned __int64(8字节,0~18446744073709551615)
- 用途:大整数运算,如文件大小。
二、指针与地址类型
-
指针精度类型
- DWORD_PTR, ULONG_PTR: 指针精度的无符号整数(32位下4字节,64位下8字节)
- 用途:安全地存储指针地址,用于指针算术。
-
通用指针
- PVOID: void*(通用指针)
- LPVOID: void*(旧式命名,同 PVOID)
-
字符串指针
- LPSTR: char*(ANSI 字符串)
- LPWSTR: wchar_t*(Unicode 字符串)
- LPTSTR: 根据编译环境切换为 char* 或 wchar_t*(通过 UNICODE 宏)
三、句柄类型(HANDLE)
-
通用句柄
- HANDLE: typedef void* HANDLE(表示系统对象如文件、线程等)
-
具体句柄
- HWND: 窗口句柄
- HDC: 设备上下文句柄
- HKEY: 注册表键句柄
- HMODULE: 模块句柄(DLL/EXE 内存基址)
四、字符与字符串类型
-
单字符
- CHAR: char(ANSI)
- WCHAR: wchar_t(UTF-16)
-
通用字符
- TCHAR: 根据 UNICODE 宏定义为 char 或 wchar_t
- 示例:
TCHAR szText[] = _T("Hello"); // 自动适配编码
-
字符串指针
- LPCTSTR: 常量通用字符串指针(const TCHAR*)
- LPTSTR: 可变通用字符串指针(TCHAR*)
五、回调函数与调用约定
- 调用约定
- WINAPI: __stdcall(Windows API 标准调用约定)
- CALLBACK: __stdcall(用于回调函数,如窗口过程)
- 示例:
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
六、特殊用途类型
-
HRESULT
- typedef LONG HRESULT(32位错误码,高位表示成功/失败)
- 用法:
if (SUCCEEDED(hr)) { /* 操作成功 */ }
-
COLORREF
- typedef DWORD COLORREF(32位颜色值,格式 0x00BBGGRR)
SIZE_T / SSIZE_T
- typedef DWORD COLORREF(32位颜色值,格式 0x00BBGGRR)
-
SIZE_T: ULONG_PTR(表示内存大小)
- SSIZE_T: LONG_PTR(带符号版本)
七、兼容性类型
- 平台适配类型
- INT_PTR, UINT_PTR: 确保在 32/64 位系统下兼容的整数类型。
- 示例:
INT_PTR nResult = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
总结
- **核心原则:**Windows 数据类型通过 typedef 隐藏底层实现,确保代码可移植性。
- 注意事项:
- 使用 TCHAR 系列类型编写跨 ANSI/Unicode 的代码。
- 处理句柄时需调用 CloseHandle() 等函数释放资源。
- 优先使用
HRESULT
和SUCCEEDED
()/FAILED
() 处理错误。
更多推荐
所有评论(0)