在前面示例和函数原型中,有一些“奇怪”的数据类型,如前面的HINSTANCE和LPSTR等,事实上,很多这样的数据类型只是一些基本数据类型的别名,以方便不同风格的程序员使用。表1.1列出了一些在Windows编程中常用的基本数据类型;表1.2列出了常用的预定义句柄,它们的类型均为void *,即一个32位指针。
表1.1 Windows编程中常用的基本数据类型
Windows所用的数据类型 对应的基本数据类型 说明
BOOL bool 布尔值
BSTR unsigned short * 32位字符指针
BYTE unsigned char 8位无符号整数
COLORREF unsigned long 用作颜色值的32位值
DWORD unsigned long 32位无符号整数,段地址和相关的偏移地址
LONG long 32位带符号整数
LPARAM long 作为参数传递给窗口过程或回调函数的32位值
LPCSTR const char * 指向字符串常量的32位指针
LPSTR char * 指向字符串的32位指针
LPVOID void * 指向未定义类型的32位指针
LRESULT long 来自窗口过程或回调函数的32位返回值
UINT unsigned int 32位无符号整数
WORD unsigned short 16位无符号整数
WPARAM unsigned int 当做参数传递给窗口过程或回调函数的32位值
说明:
这些基本数据类型都是用大写字符来表示的,以与一般C/C++基本数据类型相区别。
若数据类型的前缀是P或LP,则表示该类型是一个指针或长指针数据类型;若数据类型的前缀是U,则表示是无符号数据类型。
Windows还提供一些宏来处理上述基本数据类型。例如,LOBYTE和HIBYTE分别用来获取16位数值中的低位和高位字节,LOWORD和HIWORD分别用来获取32位数值中的低位字和高位字,MAKEWORD是将两个16位无符号值结合成一个32位无符号值。
表1.2 Windows编程中常用的句柄类型
句柄类型 说明
HBITMAP 保存位图信息的内存域的句柄
HBRUSH 画刷句柄
HCURSOR 鼠标光标句柄 HDC 设备描述表句柄
HFONT 字体句柄
HICON 图标句柄
HINSTANCE 应用程序的实例句柄
HMENU 菜单句柄
HPALETTE 颜色调色板句柄
HPEN 在设备上画图时用于指明线型的笔的句柄
HWND 窗口句柄