Windows数据类型探幽——千回百转你是谁?(1)

类别:VC语言 点击:0 评论:0 推荐:

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)宏定义…… 窗口的句柄
接下表

本文地址:http://com.8s8s.com/it/it1100.htm