总结 Windows 数据类型

一、基础数据类型

  1. BOOL / BOOLEAN

    • BOOL: typedef int BOOL(4字节,TRUE=1, FALSE=0)
    • BOOLEAN: typedef BYTE BOOLEAN(1字节,TRUE=1, FALSE=0)
    • 用途:逻辑判断,如函数返回值。
  2. BYTE / WORD / DWORD

    • BYTE: unsigned char(1字节,0~255)
    • WORD: unsigned short(2字节,0~65535)
    • DWORD: unsigned long(4字节,0~4294967295)
    • 用途:存储无符号整数,常见于资源大小、标志位。
  3. INT / UINT

    • INT: int(4字节,-2^31 ~ 2^31-1)
    • UINT: unsigned int(4字节,0~4294967295)
    • 用途:通用整数类型。
  4. LONG / ULONG

    • LONG: long(4字节,同 INT)
    • ULONG: unsigned long(4字节,同 UINT)
  5. LONGLONG / ULONGLONG

    • LONGLONG: __int64(8字节,-2^63 ~ 2^63-1)
    • ULONGLONG: unsigned __int64(8字节,0~18446744073709551615)
    • 用途:大整数运算,如文件大小。

二、指针与地址类型

  1. 指针精度类型

    • DWORD_PTR, ULONG_PTR: 指针精度的无符号整数(32位下4字节,64位下8字节)
    • 用途:安全地存储指针地址,用于指针算术。
  2. 通用指针

    • PVOID: void*(通用指针)
    • LPVOID: void*(旧式命名,同 PVOID)
  3. 字符串指针

    • LPSTR: char*(ANSI 字符串)
    • LPWSTR: wchar_t*(Unicode 字符串)
    • LPTSTR: 根据编译环境切换为 char*wchar_t*(通过 UNICODE 宏)

三、句柄类型(HANDLE)

  1. 通用句柄

    • HANDLE: typedef void* HANDLE(表示系统对象如文件、线程等)
  2. 具体句柄

    • HWND: 窗口句柄
    • HDC: 设备上下文句柄
    • HKEY: 注册表键句柄
    • HMODULE: 模块句柄(DLL/EXE 内存基址)

四、字符与字符串类型

  1. 单字符

    • CHAR: char(ANSI)
    • WCHAR: wchar_t(UTF-16)
  2. 通用字符

    • TCHAR: 根据 UNICODE 宏定义为 charwchar_t
    • 示例:
      TCHAR szText[] = _T("Hello"); // 自动适配编码
      
  3. 字符串指针

    • LPCTSTR: 常量通用字符串指针(const TCHAR*
    • LPTSTR: 可变通用字符串指针(TCHAR*

五、回调函数与调用约定

  1. 调用约定
    • WINAPI: __stdcall(Windows API 标准调用约定)
    • CALLBACK: __stdcall(用于回调函数,如窗口过程)
    • 示例:
      LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
      

六、特殊用途类型

  1. HRESULT

    • typedef LONG HRESULT(32位错误码,高位表示成功/失败)
    • 用法:
      if (SUCCEEDED(hr)) { /* 操作成功 */ }
      
  2. COLORREF

    • typedef DWORD COLORREF(32位颜色值,格式 0x00BBGGRR)
  3. SIZE_T / SSIZE_T

    • SIZE_T: ULONG_PTR(表示内存大小)
    • SSIZE_T: LONG_PTR(带符号版本)

七、兼容性类型

  1. 平台适配类型
    • INT_PTR, UINT_PTR: 确保在 32/64 位系统下兼容的整数类型。
    • 示例:
      INT_PTR nResult = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
      

总结

  • 核心原则:Windows 数据类型通过 typedef 隐藏底层实现,确保代码可移植性。
  • 注意事项
    • 使用 TCHAR 系列类型编写跨 ANSI/Unicode 的代码。
    • 处理句柄时需调用 CloseHandle() 等函数释放资源。
    • 优先使用 HRESULTSUCCEEDED()/FAILED() 处理错误。

你可能感兴趣的:(windows)