如果你从来没有接触过windows编程,那么当你第一次看到windows程序的时候,你会晕了,因为满篇的DWORD_PTR 或者诸如 LPRECT一类的标识,所以,弄清这些标识符是有必要的。
绝大多数的windows程序都是由function或者COM(Component Object Model)组成的,很少的API直接提供C++的class。windows含有很多类型,但是大都定义在WinDef.h中,因此,只要包含这个头文件就ok了。下图给出了主要的数据类型。可以看出,数据额类型存在一定程度的冗余,这主要是因为历史版本的API 造成的。
至于bool类型,它也在WinDef.h中定义的。
#define FALSE 0
#define TRUE 1
So注意,这里的bool类型是int!说完了基本数据类型,现在介绍一下其他的数据类型。Windows定义了很多指针类型,这些指针类型通常带有P-或者LP-的前缀。例如,LPRECT 是一个指向RECT(代表一个矩阵)的指针。下面三种定义是完全相同的。
RECT* rect;
LPRECT rect;
PRECT rect;
通常,P代表指针(pointer),而LP代表长指针(long pointer)。他们没有很大差别,毕竟都是指针。下面的几种指针类型代表着不同长度的指针类型.。也就是说,32bit的应用中是32bit宽,当一个32bit的程序运行在64位的windows平台上时,这些数据类型仍然是4 byte宽。
•DWORD_PTR
•INT_PTR
•LONG_PTR
•ULONG_PTR
•UINT_PTR
接下来说说string类型,Windows是支持UNICODE的,每一个字符占16bit(宽字符),Visual C++ 编译器支持内置的数据类型wchar_t(宽字符)。 头文件file WinNT.h 也定义了如下类型。
typedef wchar_t WCHAR;
定义一个宽的字符要在字符前面加上前缀“L”,如下:
wchar_t a = L'a';
wchar_t *str = L"hello";
这是一些其他的和string相关的数据类型。