DWORD:就是double word,每个word为两个字节,所以double word就是四个字节,每个字节为8位,所以DWOD是32位
typedef unsigned long DWORD ,DWORD现在表示32bit无符号整数,以后windows升级到64位了,DWORD仍然表示32位(也许以后long不是32位了,此时DWORD就不是32位了),那些和位数相关的整数,最好不要用int,long,short之类的类型,因为这些类型的位数都是不确定的,如在16位操作系统中int是16位,32位中int为32位,所以等到后来的就不好定了,程序移植性差,用重新定义的类型这个问题就好解决了,只需重新定义一下类型就行了。
BYTE:BYTE数据类型用一个字节存储,可以区别256个数字,取值范围是从0-255的无符号整数,所以不能表示负数,效果等同于usinged char
typedef BYTE unsigned char,这样就定义了一种新的类型,在vc++中byte类型包含在windows.h头文件中,所以用此类型时,需要添加#include <windows.h>
句柄:是windows用来表示对象的,句柄是windows操作系统中一个概念,在windows程序中有各种各样的资源(窗口,图标,光标等),系统在创建这些系统资源时需要为他们分配内存,并返回这些资源的标识号,这个标识号就是句柄,句柄指的是一个核心对象在某一个进程中的唯一索引,而不是指针,由于地址空间的限制,句柄所标识的内容对进程是不可见得,只能通过操作系统通过进程句柄列表进行维护
PS:句柄列表:每个进程都要创建一个句柄列表,这些句柄指向各种系统资源,比如信号量,线程,文件等,进程中的所以线程都可以访问这些资源
输出句柄值都是小于100的,无效返回值为INVALID_HANDLE_VALUE
HMODULE:模块句柄,代表程序载入的模块,win32系统中通常是载入模块的线性地址
HANDLE:代表系统的内核对象,如文件句柄,线程句柄,进程句柄
HINSTANCE:在win32中与HMODULE是同样的东西,在win32中还存在的原因是在win16中使用HINSTANCE来区别task
HWND:窗口句柄
typedef HINSTANCE HMODULE;
typedef HANDLE HINSTANCE;
typedef PVOID HANDLE;
typedef void *PVOID;
其实这些都是句柄,为了表达的方便,所以对于不同的类型使用不同样的typedef,比如HISTANCE表示实例句柄,HMODULE表示模块句柄,实际上他们本质上都是VOID指针,可以执行任何类型。