Windows运用typedef或#define定了许多新的数据类型,后面几节中我们曾经领略到了。它们固然多,然则都有纪律可循,许多多是对C/C++中数据类型的复杂加工,并且很轻易“见名知意”。要想进修Windows编程,必需要理解常用的数据类型。
假如你对C言语或许C++的数据类型比拟熟习的话,那么关于一些根底的内容这个进程就是渐渐熟习的进程。
这些数据类型在windows.h头文件中界说:

			typedef int INT; /* ××× */ typedef unsigned int UINT; /* 无符号××× */ typedef unsigned int *PUINT; /* 无符号×××指针 */ typedef int BOOL; /* 布尔类型 */ typedef unsigned char BYTE; /* 字节 */ typedef unsigned short WORD; /* WORD (无符号短整型) */ typedef unsigned long DWORD; /* DOUBLE WORD (无符号长×××)*/ typedef float FLOAT; /* 浮点型 */ typedef FLOAT *PFLOAT; /* 指向float类型指针 */ typedef BOOL near *PBOOL; /* 指向布尔类型指针 */ typedef BOOL far *LPBOOL; typedef BYTE near *PBYTE; /* 指向字节类型指针 */ typedef BYTE far *LPBYTE; typedef int near *PINT; /* ×××指针 */ typedef int far *LPINT; typedef WORD near *PWORD; /* 指向WORD类型的指针 */ typedef WORD far *LPWORD; typedef long far *LPLONG; /* 指向长×××的指针 */ typedef DWORD near *PDWORD; /* 指向DWORD类型的指针 */ typedef DWORD far *LPDWORD; typedef void far *LPVOID; /* 指向void类型的指针 */ typedef CONST void far *LPCVOID; /* 指向void类型的常指针 */

复杂说下,大局部类型都没有什么新奇的中央,能够许多读者会对谁人 far 和 near 认为有疑问,实践上 F12 检查界说会发现他们就界说上方:

			#define far#define near

看到这里你能否照样有疑问?其实,这个 far 和 near 只是用来标识变量的新旧的(预处置阶段 far 和 near 会被交换成空字符串)。 例如 PINT 和 LPINT 实践上多是 int *,只不外一个是老式写法,一个是旧式写法,这多是为了兼容成绩。
复杂的看下这些数据类型,就可以总结出:凡是是以 “P” 扫尾的多是指针(pointer)类型("LP"是老式写法)。撇开这些不谈,那么实践上这些 Windows API 常用的一些数据构造跟我们本来所学的 C/C++ 变量差异就是一个typedef 罢了,根底好的熟习一下就行了。不外,也不要想得这么复杂,Windows 编程还有一些比拟复杂的类型比方 HWND、HANDLE 等。
在碰着不熟习的类型时请纯熟的运用 “右键转到界说” 或许 F12。 人人不必太甚惧怕这些复杂的类型称号,Windows 数据类型并不是内建的数据类型类型,而多是从C类型重界说失掉的。
Windows 数据类型名定名的纪律

  • 无符号类型:普通是以“U”扫尾,比方“INT”对应的“UINT”。

  • 指针类型:其指向的数据类型前加“LP”或“P”,比方指向 DWORD 的指针类型为“LPDWORD”和“PDWORD”。

  • 句柄类型:以“H”扫尾。比方,HWND 是window(WND简写)也就是窗口的句柄,菜单(MENU)类型对应的句柄类型为 “HMENU” 等等。