Windows Data Types
接下表
Windows数据类型
由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有“类”这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解这些类型,对剖析程序的工作原理是非常有用的。今天又是周末,我把这些类型列出来,然后把它们的“原形”也找出来——是不是很像“照妖镜”呀。
下面这张表里包括这些类型:字符类型(character),整数类型(integer),逻辑值类型(布尔型,海峡那边的兄弟们喜欢叫“布林型”,Boolean),指针类型(pointer),句柄型(handle)。其中,字符类型、整数类型和逻辑值(布尔)类型是C语言编译器通用的,也就是与标准C语言一样。大多数指针类型都是以P(Pointer)或者LP(Long Pointer)前缀开头。“句柄”是指被装载进内存的一个资源(本质而言就是指一定范围内的唯一编号)。
下面这张表是我结合MSDN里的资料制作的,因为自己也是初学,做的还比较粗糙,请大家多多指正:)
Windows数据类型 | 本质类型 | 字节数 | 定义过程(来历) | 含义 |
ATOM | unsigned short | 2 | unsigned short→WORD→ATOM | 在Atom表中,一键(16位整数)一值(一个String)为一个Atom。 |
BOOL | int | * | int→BOOL | 逻辑变量,布尔值 (取值为 TRUE 或 FALSE) |
BOOLEAN | unsigned char | 1 | unsigned char→BYTE→BOOLEAN | 逻辑变量,布尔值 (取值为 TRUE 或 FALSE) |
BYTE | unsigned char | 1 | unsigned char→BYTE | 字节型,8位。 |
CALLBACK | __stdcall | 调用 | __stdcall→CALLBACK | 回调函数的调用约定 |
CHAR | char | 1 | char→CHAR | 8位Windows字符(ANSI) |
COLORREF | unsigned long | 4 | unsigned long→DWORD→COLORREF | 红,绿,蓝(RGB)值 |
CONST | const | 关键字 | const→CONST | 常量 |
CRITICAL_SECTION | RTL_CRITICAL_SECTION结构体 | ? | RTL_CRITICAL_SECTION(结构)→CRITICAL_SECTION | Critical-section对象 |
DWORD | unsigned long | 4 | unsigned long→DWORD | 32位无符号整数 |
DWORD_PTR | unsigned long | 4 | unsigned long→ULONG_PTR→DWORD_PTR(另有其它路径) | 略……(用处挺大,不过太长了) |
DWORD32 | unsigned int | * | unsigned int→DWORD32 | 32位无符号整数 |
DWORD64 | unsigned __int64 | 8 | unsigned __int64→DWORD64 | 64位无符号整数 |
FLOAT | float | 4 | float→FLOAT | 浮点数变量 |
HACCEL | HACCEL__结构体指针 | 由DECLARE_HANDLE(name)宏定义的指向HACCEL__结构体的指针 | 快捷键列表的句柄 | |
HANDLE | void *(一个地址) | void *→HANDLE | 对象的句柄 | |
HBITMAP | HBITMAP__结构体指针 | 由DECLARE_HANDLE(name)宏定义的指向HBITMAP__结构体的指针 | 位图的句柄 | |
HBRUSH | HBRUSH__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 画刷的句柄 | |
HCONV | HCONV__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 动态数据交换(DDE)会话的句柄 | |
HCONVLIST | HCONVLIST__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 动态数据交换(DDE)会话列表的句柄 | |
HCURSOR | HICON__结构体指针 | HICON__ *→HICON→HCURSOR | 光标的句柄 | |
HDC | HDC__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 设备上下文(DC)的句柄 | |
HDDEDATA | HDDEDATA__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 动态数据交换数据的句柄 | |
HDESK | HDESK__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 桌面(Desktop)的句柄 | |
HDROP | HDROP__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | Handle to an internal drop structure. | |
HDWP | void *(一个地址) | void *→HANDLE→HDWP | Handle to a deferred window position structure. | |
HENHMETAFILE | HENHMETAFILE__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 增强图元文件的句柄 | |
HFILE | int | * | int→HFILE | 由OpenFile(而不是CreateFile)打开的文件的句柄. |
HFONT | HFONT__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 字体的句柄 | |
HGDIOBJ | void near * | void NEAR *→HGDIOBJ | GDI对象的句柄 | |
HGLOBAL | void *(一个地址) | void *→HANDLE→HGLOBAL | 全局内存块的句柄 | |
HHOOK | HHOOK__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 句子(hook)的句柄 | |
HICON | HICON__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 图标的句柄 | |
HIMAGELIST | _IMAGELIST结构体指针 | _IMAGELIST *→HIMAGELIST | 图片列表的句柄 | |
HIMC | HIMC__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 输入上下文的句柄 | |
HINSTANCE | HINSTANCE__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 实例的句柄 | |
HKEY | HKEY__结构体指针 | 由DECLARE_HANDLE(name)宏定义……(另有一条路径,一样) | 注册表键的句柄 | |
HKL | HKL__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 输入点标识符 | |
HLOCAL | void *(一个地址) | void *→HANDLE→HLOCAL | 本地内存块的句柄 | |
HMENU | HMENU__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 菜单的句柄 | |
HMETAFILE | HMETAFILE__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 图元文件的句柄 | |
HMODULE | HINSTANCE__结构体指针 | HINSTANCE__*→HINSTANCE→HMODULE | 模块的句柄。值由模块的位置来决定。 | |
HMONITOR | HMONITOR__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 显示器的句柄 | |
HPALETTE | HPALETTE__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 调色板的句柄 | |
HPEN | HPEN__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 画(线)笔的句柄 | |
HRGN | HRGN__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 区域的句柄 | |
HRSRC | HRSRC__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 资源的句柄 | |
HSZ | HSZ__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 动态数据交换(DDE)字符串的句柄 | |
HWINSTA | HWINSTA__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 窗口状态的句柄 | |
HWND | HWND__结构体指针 | 由DECLARE_HANDLE(name)宏定义…… | 窗口的句柄 |
接下表
本文转自 水之真谛 51CTO博客,原文链接:http://blog.51cto.com/liutiemeng/18970,如需转载请自行联系原作者