- Windows在
windef.h
中定义了若干实用的宏,例如:
#define TRUE 1
#define FALSE 0
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define APIENTRY WINAPI
#define LOWORD(x) ((WORD)(x))
其中__stdcall
表示PASCAL调用约定,被调函数采用自右向左的顺序参数入栈,函数自己在退出时清空堆栈;__cdecl
表示C调用约定,被调函数采用自右向左的顺序参数入栈,由调用者清空堆栈。CALLBACK
表示回调函数,WINAPI
表示Windows API
函数;far
表示32位远指针;LOWORD(x)
取x的低16位值,HIWORD(x)
取x的高16位值;
Windows程序经常需要使用多种类型的数据,为了提高程序的可读性和兼容性,Windows给许多基本数据类型重新定义了别名,一般形式为:
typedef C语言本质类型 Windows数据类型
例如:
typedef unsigned long DWORD
则 DWORD x;
等价于 unsigned long x;
常用的Windows数据类型如下,定义在windef.h中:
Windows 数据类型 | C语言本质类型 | 含义 |
---|---|---|
BOOL | int | 逻辑类型(取值为TRUE/FALSE) |
BYTE | unsigned char | 字节型 |
CHAR | char | ANSI字符 |
COLORREF | unsigned long | 颜色值,分红、绿、蓝(RGB字节) |
DWORD | unsigned long | 无符号长整型 |
LPARAM | long | LONG型消息参数 |
WPARAM | unsigned int | WORD型消息参数 |
LPSTR | CHAR * | 8位ANSI字符串的指针 |
LPCSTR | CONST CHAR * | 只读型8位ANSI字符串的指针 |
LPCWSTR | CONST CHAR * | 只读型 16位Unicode字符串的指针 |
LPWSTR | WCHAR * | 16位ANSI字符串的指针 |
LRESULT | long | 消息处理结果值 |
来源:《软件开发技术——Windows高级编程技术》