LPVOID
这种类型是指“指向void类型的指针。这是因为ANSI-C的标准中有这种void类型的指针,用来指向任意类型。这更像是一个预留类型,尽量不要使用。如果遇见LPVOID类型的参数,需要给它传一个NULL参数。
DWORD,WORD,BYTE
这几种类型无论在什么类型的平台上,都有相同的固定长度。
DWORD的长度为无符号的32位整型,其前缀为dw。
WORD的长度为无符号的16位整型,其前缀为w。
BYTE的长度为无符号的8位整型,其前缀为b。
LONG, INT, SHORT, CHAR
这几种类型的长度不是固定的,而是随宿主机器的不同而变化。
typedef long LONG;
typedef unsigned long ULONG;
typedef int INT;
typedef unsigned int UINT;
typedef short SHORT;
typedef unsigned short USHORT;
typedef char CHAR;
typedef unsigned char UCHAR;
STR,
STR是一种已经获得存储空间的字符串类型。当字符串可以像字符数组那样操作时,我们就可以使用
STR了。人们一般不使用STR这种类型,而是使用字符数组,因为字符数组的长度是透明的。
LPSTR(Long Poniter to a STR )与其它String对象的唯一不同在于LPSTR只能是ASCII,而不
能是Unicode。它的前缀通常是lpsz(long pointer to a string that is zero-terminated)。这种类
型所代表的字符串都是以“0”结尾的。
LPSTR
typedef STR* LPSTR;
TCHAR
这是一种"可变"的类型,也就是说TCHAR即可以存放1个字节的AscII字符,也可以存放2个字节的Unicode
字符。它的定义类似于
#ifdef UNICODE
#define TCHAR WORD #else #define TCHAR BYTE #endif
TSTR, LPTSTR
类似于TCHAR,是一种”可变“的类型,既可以存放1个字节的AscII字符,也可以存放2个字节的Unicode
字符。HANDLE
在windows内核中,windows有一张记录了内核所需管理的不同对象的表格,这些对象如窗口,按钮,标签,菜单等。
每一个这一类的对象都有一个唯一的标记值(类似ID),就是HANDLE。如果你想拿那张表中记录的对象,你就必须用相应的那个HANDLE去想windows拿,windows将返回对应的对象。在<windows.h>中,HANDLE是一个32位的整型,但我们不能将它作为一个数来计算,更应该将其作为一个标记来使用。
HWND
HWND被认为是指向窗口的HANDLE,被用来记录在屏幕上显示的不同对象。如果你想跟一个窗口交互,你必须拥有一个该
窗口对象的handle,即HWND。HWND的前缀是“hwnd”。
HINSTANCE
HINSTANCE是指向程序实例的一个句柄(handle)。每个程序(program)都有一个单一的实例(instance)变量,因此
操作系统可以和程序进行通讯。例如,如果你想创建一个窗口,你必须将你的程序的HISTANCE传到windows kernel中,这样kernel
才能知道这个窗口是属于谁的。如果你想使自己的程序与其它程序进行通讯,最好的方法就是将你程序的HISNTANCE的拷贝传过去