Windows 数据类型
Windows 支持的数据类型用于定义函数返回值、函数和消息参数以及结构成员。 它们定义这些元素的大小和含义。 有关基础 C/C++ 数据类型的详细信息,请参阅 数据类型范围。
下表包含以下类型:字符、整数、布尔值、指针和句柄。 大多数 C 编译器通常使用字符、整数和布尔类型。 大多数指针类型名称以 P 或 LP 前缀开头。 句柄是指已加载到内存中的资源。
有关处理 64 位整数的详细信息,请参阅 大整数。
数据类型 | 描述 | ||
---|---|---|---|
APIENTRY |
系统函数的调用约定。 此类型在 WinDef.h 中声明,如下所示: #define APIENTRY WINAPI |
||
ATOM |
原子。 有关详细信息,请参阅 关于 Atom 表。 此类型在 WinDef.h 中声明,如下所示: typedef WORD ATOM; |
||
BOOL |
布尔变量(应 TRUE 或 FALSE)。 此类型在 WinDef.h 中声明,如下所示: typedef int BOOL; |
||
BOOLEAN |
布尔变量(应 TRUE 或 FALSE)。 此类型在 WinNT.h 中声明,如下所示: typedef BYTE BOOLEAN; |
||
BYTE |
字节(8 位)。 此类型在 WinDef.h 中声明,如下所示: typedef unsigned char BYTE; |
||
CALLBACK |
回调函数的调用约定。 此类型在 WinDef.h 中声明,如下所示: #define CALLBACK __stdcall CALLBACK、WINAPI和 APIENTRY 都用于定义具有__stdcall调用约定的函数。 Windows API 中的大多数函数都使用 WINAPI声明。 你可能希望对实现的回调函数使用 CALLBACK,以帮助将函数标识为回调函数。 |
||
CCHAR |
8 位 Windows (ANSI) 字符。 此类型在 WinNT.h 中声明,如下所示: typedef char CCHAR; |
||
CHAR |
8 位 Windows (ANSI) 字符。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示: typedef char CHAR; |
||
COLORREF |
红色、绿色、蓝色(RGB)颜色值(32 位)。 有关此类型的信息,请参阅 COLORREF。 此类型在 WinDef.h 中声明,如下所示: typedef DWORD COLORREF; |
||
CONST |
一个变量,其值要在执行期间保持常量。 此类型在 WinDef.h 中声明,如下所示: #define CONST const |
||
DWORD |
32 位无符号整数。 范围为 0 到 4294967295 十进制。 此类型在 IntSafe.h 中声明,如下所示: typedef unsigned long DWORD; |
||
DWORDLONG |
64 位无符号整数。 范围为 0 到 18446744073709551615 十进制。 此类型在 IntSafe.h 中声明,如下所示: typedef unsigned __int64 DWORDLONG; |
||
DWORD_PTR |
指针精度的无符号长类型。 将指针强制转换为长类型以执行指针算术时使用。 (也通常用于已扩展到 64 位 Windows 中的 64 位的常规 32 位参数。 此类型在 BaseTsd.h 中声明,如下所示: typedef ULONG_PTR DWORD_PTR; |
||
DWORD32 |
32 位无符号整数。 此类型在 BaseTsd.h 中声明,如下所示: typedef unsigned int DWORD32; |
||
DWORD64 |
64 位无符号整数。 此类型在 BaseTsd.h 中声明,如下所示: typedef unsigned __int64 DWORD64; |
||
FLOAT |
浮点变量。 此类型在 WinDef.h 中声明,如下所示: typedef float FLOAT; |
||
HACCEL |
加速器表的句柄。 此类型在 WinDef.h 中声明,如下所示: typedef HANDLE HACCEL; |
||
HALF_PTR |
指针大小的一半。 在包含指针和两个小字段的结构中使用。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
HANDLE |
对象的句柄。 此类型在 WinNT.h 中声明,如下所示:
|
||
HBITMAP |
位图的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HBRUSH |
画笔的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HCOLORSPACE |
此类型在 WinDef.h 中声明,如下所示:
|
||
HCONV |
动态数据交换(DDE)会话的句柄。 此类型在 Ddeml.h 中声明,如下所示:
|
||
HCONVLIST |
DDE 对话列表的句柄。 此类型在 Ddeml.h 中声明,如下所示:
|
||
HCURSOR |
此类型在 WinDef.h 中声明,如下所示:
|
||
HDC |
设备上下文(DC)的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HDDEDATA |
DDE 数据的句柄。 此类型在 Ddeml.h 中声明,如下所示:
|
||
HDESK |
桌面的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HDROP |
内部放置结构的句柄。 此类型在 ShellApi.h 中声明,如下所示:
|
||
HDWP |
延迟窗口位置结构的句柄。 此类型在 WinUser.h 中声明,如下所示:
|
||
HENHMETAFILE |
增强型图元文件的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HFILE |
OpenFile打开的文件的句柄,而不是 CreateFile。 此类型在 WinDef.h 中声明,如下所示:
|
||
HFONT |
字体的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HGDIOBJ |
GDI 对象的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HGLOBAL |
全局内存块的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HHOOK |
挂钩的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HICON |
此类型在 WinDef.h 中声明,如下所示:
|
||
HINSTANCE |
实例的句柄。 这是内存中模块的基址。 HMODULE 和 HINSTANCE 今天是相同的,但在 16 位 Windows 中表示了不同的内容。 此类型在 WinDef.h 中声明,如下所示:
|
||
HKEY |
注册表项的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HKL |
输入区域设置标识符。 此类型在 WinDef.h 中声明,如下所示:
|
||
HLOCAL |
本地内存块的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HMENU |
此类型在 WinDef.h 中声明,如下所示:
|
||
HMETAFILE |
图元文件的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HMODULE |
模块的句柄。 这是内存中模块的基址。 HMODULE 和 HINSTANCE 在当前版本的 Windows 中相同,但在 16 位 Windows 中表示不同的内容。 此类型在 WinDef.h 中声明,如下所示:
|
||
HMONITOR |
显示监视器的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HPALETTE |
调色板的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HPEN |
笔的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HRESULT |
COM 接口使用的返回代码。 有关详细信息,请参阅 COM 错误代码 此类型在 WinNT.h 中声明,如下所示:
|
||
HRGN |
此类型在 WinDef.h 中声明,如下所示:
|
||
HRSRC |
资源的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
HSZ |
DDE 字符串的句柄。 此类型在 Ddeml.h 中声明,如下所示:
|
||
HWINSTA |
此类型在 WinDef.h 中声明,如下所示:
|
||
HWND |
窗口的句柄。 此类型在 WinDef.h 中声明,如下所示:
|
||
INT |
32 位有符号整数。 范围通过2147483647十进制 -2147483648。 此类型在 WinDef.h 中声明,如下所示:
|
||
INT_PTR |
指针精度的带符号整数类型。 将指针强制转换为整数以执行指针算术时使用。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
INT8 |
8 位有符号整数。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
INT16 |
16 位有符号整数。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
INT32 |
32 位有符号整数。 范围通过2147483647十进制 -2147483648。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
INT64 |
64 位有符号整数。 范围 -9223372036854775808 到9223372036854775807小数。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
LANGID |
语言标识符。 有关详细信息,请参阅 语言标识符。 此类型在 WinNT.h 中声明,如下所示:
|
||
LCID |
区域设置标识符。 有关详细信息,请参阅 区域设置标识符。 此类型在 WinNT.h 中声明,如下所示:
|
||
LCTYPE |
区域设置信息类型。 有关列表,请参阅 区域设置信息常量。 此类型在 WinNls.h 中声明,如下所示:
|
||
LGRPID |
语言组标识符。 有关列表,请参阅 EnumLanguageGroupLocales。 此类型在 WinNls.h 中声明,如下所示:
|
||
LONG |
32 位有符号整数。 范围通过2147483647十进制 -2147483648。 此类型在 WinNT.h 中声明,如下所示:
|
||
LONGLONG |
64 位有符号整数。 范围 -9223372036854775808 到9223372036854775807小数。 此类型在 WinNT.h 中声明,如下所示:
|
||
LONG_PTR |
指针精度的带符号长类型。 将指针强制转换为长指针以执行指针算术时使用。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
LONG32 |
32 位有符号整数。 范围通过2147483647十进制 -2147483648。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
LONG64 |
64 位有符号整数。 范围 -9223372036854775808 到9223372036854775807小数。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
LPARAM |
消息参数。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPBOOL |
指向 BOOL的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPBYTE |
指向 BYTE的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPCOLORREF |
指向 COLORREF 值的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPCSTR |
指向常量以 null 结尾的字符串(8 位 Windows(ANSI)字符的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
LPCTSTR |
如果定义了 UNICODE,则为 LPCWSTR;否则,LPCSTR。 有关详细信息,请参阅 字符串的 Windows 数据类型。 此类型在 WinNT.h 中声明,如下所示:
|
||
LPCVOID |
指向任意类型的常量的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPCWSTR |
指向 16 位 Unicode 字符的常量以 null 结尾的字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
LPDWORD |
指向 DWORD的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPHANDLE |
指向 HANDLE的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPINT |
指向 INT的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPLONG |
此类型在 WinDef.h 中声明,如下所示:
|
||
LPSTR |
指向以 null 结尾的 8 位 Windows (ANSI) 字符字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
LPTSTR |
如果定义了 此类型在 WinNT.h 中声明,如下所示:
|
||
LPVOID |
指向任意类型的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPWORD |
指向 WORD的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
LPWSTR |
指向 16 位 Unicode 字符的以 null 结尾的字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
LRESULT |
消息处理的签名结果。 此类型在 WinDef.h 中声明,如下所示:
|
||
PBOOL |
指向 BOOL的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PBOOLEAN |
指向 BOOLEAN的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PBYTE |
指向 BYTE的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PCHAR |
指向 CHAR的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PCSTR |
指向常量以 null 结尾的字符串(8 位 Windows(ANSI)字符的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
PCTSTR |
如果定义了 UNICODE,则 PCWSTR;否则为 PCSTR。 有关详细信息,请参阅 字符串的 Windows 数据类型。 此类型在 WinNT.h 中声明,如下所示:
|
||
PCWSTR |
指向 16 位 Unicode 字符的常量以 null 结尾的字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
PDWORD |
指向 DWORD的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PDWORDLONG |
指向 DWORDLONG的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PDWORD_PTR |
指向 DWORD_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PDWORD32 |
指向 DWORD32的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PDWORD64 |
指向 DWORD64的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PFLOAT |
指向 FLOAT的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PHALF_PTR |
指向 HALF_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PHANDLE |
指向 HANDLE的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PHKEY |
指向 HKEY的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PINT |
指向 INT的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PINT_PTR |
指向 INT_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PINT8 |
指向 INT8的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PINT16 |
指向 INT16的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PINT32 |
指向 INT32的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PINT64 |
指向 INT64的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PLCID |
指向 LCID的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PLONG |
此类型在 WinNT.h 中声明,如下所示:
|
||
PLONGLONG |
此类型在 WinNT.h 中声明,如下所示:
|
||
PLONG_PTR |
指向 LONG_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PLONG32 |
指向 LONG32的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PLONG64 |
指向 LONG64的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
POINTER_32 |
32 位指针。 在 32 位系统上,这是一个本机指针。 在 64 位系统上,这是截断的 64 位指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
POINTER_64 |
64 位指针。 在 64 位系统上,这是一个本机指针。 在 32 位系统上,这是一个符号扩展的 32 位指针。 请注意,假定高指针位的状态不安全。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
POINTER_SIGNED |
带符号指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
POINTER_UNSIGNED |
无符号指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PSHORT |
指向 SHORT的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PSIZE_T |
指向 SIZE_T的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PSSIZE_T |
指向 SSIZE_T的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PSTR |
指向以 null 结尾的 8 位 Windows (ANSI) 字符字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
PTBYTE |
指向 TBYTE的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PTCHAR |
指向 TCHAR的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PTSTR |
如果定义了 UNICODE,则为 PWSTR;否则为 PSTR。 有关详细信息,请参阅 字符串的 Windows 数据类型。 此类型在 WinNT.h 中声明,如下所示:
|
||
PUCHAR |
指向 UCHAR 此类型在 WinDef.h 中声明,如下所示:
|
||
PUHALF_PTR |
指向 UHALF_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUINT |
指向 UINT的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PUINT_PTR |
指向 UINT_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUINT8 |
指向 UINT8的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUINT16 |
指向 UINT16的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUINT32 |
指向 UINT32的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUINT64 |
指向 UINT64的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PULONG |
指向 ULONG 此类型在 WinDef.h 中声明,如下所示:
|
||
PULONGLONG |
指向 ULONGLONG 此类型在 WinDef.h 中声明,如下所示:
|
||
PULONG_PTR |
指向 ULONG_PTR的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PULONG32 |
指向 ULONG32的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PULONG64 |
指向 ULONG64的指针。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
PUSHORT |
指向 USHORT的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PVOID |
指向任意类型的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PWCHAR |
指向 WCHAR的指针。 此类型在 WinNT.h 中声明,如下所示:
|
||
PWORD |
指向 WORD的指针。 此类型在 WinDef.h 中声明,如下所示:
|
||
PWSTR |
指向 16 位 Unicode 字符的以 null 结尾的字符串的指针。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
QWORD |
64 位无符号整数。 此类型声明如下:
|
||
SC_HANDLE |
服务控制管理器数据库的句柄。 有关详细信息,请参阅 SCM 句柄。 此类型在 WinSvc.h 中声明,如下所示:
|
||
SC_LOCK |
服务控制管理器数据库的锁。 有关详细信息,请参阅 SCM 句柄。 此类型在 WinSvc.h 中声明,如下所示:
|
||
SERVICE_STATUS_HANDLE |
服务状态值的句柄。 有关详细信息,请参阅 SCM 句柄。 此类型在 WinSvc.h 中声明,如下所示:
|
||
SHORT |
16 位整数。 范围 -32768 到 32767 十进制。 此类型在 WinNT.h 中声明,如下所示:
|
||
SIZE_T |
指针可指向的最大字节数。 用于必须跨越指针完整范围的计数。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
SSIZE_T |
SIZE_T的已签名版本。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
TBYTE |
如果定义了 UNICODE,则 此类型在 WinNT.h 中声明,如下所示:
|
||
TCHAR |
如果定义了 UNICODE,则 此类型在 WinNT.h 中声明,如下所示:
|
||
UCHAR |
无符号 CHAR。 此类型在 WinDef.h 中声明,如下所示:
|
||
UHALF_PTR |
未签名的 HALF_PTR。 在包含指针和两个小字段的结构中使用。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UINT |
无符号 INT。 范围为 0 到 4294967295 十进制。 此类型在 WinDef.h 中声明,如下所示:
|
||
UINT_PTR |
未签名的 INT_PTR。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UINT8 |
无符号 INT8。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UINT16 |
无符号 INT16。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UINT32 |
无符号 INT32。 范围为 0 到 4294967295 十进制。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UINT64 |
无符号 INT64。 范围为 0 到 18446744073709551615 十进制。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
ULONG |
一个无符号 LONG。 范围为 0 到 4294967295 十进制。 此类型在 WinDef.h 中声明,如下所示:
|
||
ULONGLONG |
64 位无符号整数。 范围为 0 到 18446744073709551615 十进制。 此类型在 WinNT.h 中声明,如下所示:
|
||
ULONG_PTR |
未签名的 LONG_PTR。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
ULONG32 |
未签名 LONG32。 范围为 0 到 4294967295 十进制。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
ULONG64 |
未签名 LONG64。 范围为 0 到 18446744073709551615 十进制。 此类型在 BaseTsd.h 中声明,如下所示:
|
||
UNICODE_STRING |
Unicode 字符串。 此类型在 Winternl.h 中声明,如下所示:
|
||
USHORT |
未签名的 SHORT。 范围为 0 到 65535 十进制。 此类型在 WinDef.h 中声明,如下所示:
|
||
USN |
更新序列号(USN)。 此类型在 WinNT.h 中声明,如下所示:
|
||
VOID |
任何类型。 此类型在 WinNT.h 中声明,如下所示:
|
||
WCHAR |
16 位 Unicode 字符。 有关详细信息,请参阅 字体使用的字符集。 此类型在 WinNT.h 中声明,如下所示:
|
||
WINAPI |
系统函数的调用约定。 此类型在 WinDef.h 中声明,如下所示:
CALLBACK、WINAPI和 APIENTRY 都用于定义具有__stdcall调用约定的函数。 Windows API 中的大多数函数都使用 WINAPI声明。 你可能希望对实现的回调函数使用 CALLBACK,以帮助将函数标识为回调函数。 |
||
WORD |
16 位无符号整数。 范围为 0 到 65535 十进制。 此类型在 WinDef.h 中声明,如下所示:
|
||
WPARAM |
消息参数。 此类型在 WinDef.h 中声明,如下所示:
|
要求
要求 | 价值 |
---|---|
支持的最低客户端 |
Windows XP [仅限桌面应用] |
支持的最低服务器 |
Windows Server 2003 [仅限桌面应用] |
页眉 |
|