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

来源:互联网 发布:云计算的技术构成 编辑:程序博客网 时间:2024/04/30 16:33
2004年03月31日 11:20:00

Windows Data Types

Windows数据类型

  由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有"类"这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解这些类型,对剖析程序的工作原理是非常有用的。今天又是周末,我把这些类型列出来,然后把它们的"原形"也找出来--是不是很像"照妖镜"呀。

下面这张表里包括这些类型:字符类型(character),整数类型(integer),逻辑值类型(布尔型,海峡那边的兄弟们喜欢叫"布林型",Boolean),指针类型(pointer),句柄型(handle)。其中,字符类型、整数类型和逻辑值(布尔)类型是C语言编译器通用的,也就是与标准C语言一样。大多数指针类型都是以PPointer)或者LPLong Pointer)前缀开头。"句柄"是指被装载进内存的一个资源(本质而言就是指一定范围内的唯一编号)。

  下面这张表是我结合MSDN里的资料制作的,因为自己也是初学,做的还比较粗糙,请大家多多指正:)

Windows数据类型本质类型字节数定义过程(来历)含义ATOMunsigned short2unsigned short→WORD→ATOM在Atom表中,一键(16位整数)一值(一个String)为一个Atom。BOOLint*int→BOOL逻辑变量,布尔值 (取值为 TRUE 或 FALSE)BOOLEANunsigned char1unsigned char→BYTE→BOOLEAN逻辑变量,布尔值 (取值为 TRUE 或 FALSE)BYTEunsigned char1unsigned char→BYTE字节型,8位。CALLBACK__stdcall调用__stdcall→CALLBACK回调函数的调用约定CHARchar1char→CHAR8位Windows字符(ANSI)COLORREFunsigned long4unsigned long→DWORD→COLORREF红,绿,蓝(RGB)值CONSTconst关键字const→CONST常量CRITICAL_SECTIONRTL_CRITICAL_SECTION结构体?RTL_CRITICAL_SECTION(结构)→CRITICAL_SECTIONCritical-section对象DWORDunsigned long4unsigned long→DWORD32位无符号整数DWORD_PTRunsigned long4unsigned long→ULONG_PTR→DWORD_PTR(另有其它路径)略..(用处挺大,不过太长了)DWORD32unsigned int*unsigned int→DWORD3232位无符号整数DWORD64unsigned __int648unsigned __int64→DWORD6464位无符号整数FLOATfloat4float→FLOAT浮点数变量HACCELHACCEL__结构体指针 由DECLARE_HANDLE(name)宏定义的指向HACCEL__结构体的指针快捷键列表的句柄HANDLEvoid *(一个地址) void *→HANDLE对象的句柄HBITMAPHBITMAP__结构体指针 由DECLARE_HANDLE(name)宏定义的指向HBITMAP__结构体的指针位图的句柄HBRUSHHBRUSH__结构体指针 由DECLARE_HANDLE(name)宏定义..画刷的句柄HCONVHCONV__结构体指针 由DECLARE_HANDLE(name)宏定义..动态数据交换(DDE)会话的句柄HCONVLISTHCONVLIST__结构体指针 由DECLARE_HANDLE(name)宏定义..动态数据交换(DDE)会话列表的句柄HCURSORHICON__结构体指针 HICON__ *→HICON→HCURSOR光标的句柄HDCHDC__结构体指针 由DECLARE_HANDLE(name)宏定义..设备上下文(DC)的句柄HDDEDATAHDDEDATA__结构体指针 由DECLARE_HANDLE(name)宏定义..动态数据交换数据的句柄HDESKHDESK__结构体指针 由DECLARE_HANDLE(name)宏定义..桌面(Desktop)的句柄HDROPHDROP__结构体指针 由DECLARE_HANDLE(name)宏定义..Handle to an internal drop structure.HDWPvoid *(一个地址) void *→HANDLE→HDWPHandle to a deferred window position structure.HENHMETAFILEHENHMETAFILE__结构体指针 由DECLARE_HANDLE(name)宏定义..增强图元文件的句柄HFILEint*int→HFILE由OpenFile(而不是CreateFile)打开的文件的句柄.HFONTHFONT__结构体指针 由DECLARE_HANDLE(name)宏定义..字体的句柄HGDIOBJvoid near * void NEAR *→HGDIOBJGDI对象的句柄HGLOBALvoid *(一个地址) void *→HANDLE→HGLOBAL全局内存块的句柄HHOOKHHOOK__结构体指针 由DECLARE_HANDLE(name)宏定义..句子(hook)的句柄HICONHICON__结构体指针 由DECLARE_HANDLE(name)宏定义..图标的句柄HIMAGELIST_IMAGELIST结构体指针 _IMAGELIST *→HIMAGELIST图片列表的句柄HIMCHIMC__结构体指针 由DECLARE_HANDLE(name)宏定义..输入上下文的句柄HINSTANCEHINSTANCE__结构体指针 由DECLARE_HANDLE(name)宏定义..实例的句柄HKEYHKEY__结构体指针 由DECLARE_HANDLE(name)宏定义..(另有一条路径,一样)注册表键的句柄HKLHKL__结构体指针 由DECLARE_HANDLE(name)宏定义..输入点标识符HLOCALvoid *(一个地址) void *→HANDLE→HLOCAL本地内存块的句柄HMENUHMENU__结构体指针 由DECLARE_HANDLE(name)宏定义..菜单的句柄HMETAFILEHMETAFILE__结构体指针 由DECLARE_HANDLE(name)宏定义..图元文件的句柄HMODULEHINSTANCE__结构体指针 HINSTANCE__*→HINSTANCE→HMODULE模块的句柄。值由模块的位置来决定。HMONITORHMONITOR__结构体指针 由DECLARE_HANDLE(name)宏定义..显示器的句柄HPALETTEHPALETTE__结构体指针 由DECLARE_HANDLE(name)宏定义..调色板的句柄HPENHPEN__结构体指针 由DECLARE_HANDLE(name)宏定义..画(线)笔的句柄HRGNHRGN__结构体指针 由DECLARE_HANDLE(name)宏定义..区域的句柄HRSRCHRSRC__结构体指针 由DECLARE_HANDLE(name)宏定义..资源的句柄HSZHSZ__结构体指针 由DECLARE_HANDLE(name)宏定义..动态数据交换(DDE)字符串的句柄HWINSTAHWINSTA__结构体指针 由DECLARE_HANDLE(name)宏定义..窗口状态的句柄HWNDHWND__结构体指针 由DECLARE_HANDLE(name)宏定义..窗口的句柄
接下表



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=22047


原创粉丝点击