视窗和讯息(十)

2010-12-30 21:09:07 · 作者: · 浏览: 17428
pfn字首代表「指向函式的长指标」。(在Win32 API中,长指标和短指标(或者近程指标)没有区别。这只是16位元Windows的遗物。)cb字首代表「位元组数」而且通常作为一个常数来表示一个位元组的大小。h字首是一个代号,而hbr字首代表「一个画刷的代号」。lpsz字首代表「指向以0结尾字串的指标」。

Unicode版的结构定义如下:

typedef struct tagWNDCLASSW
{
UINT style ;
WNDPROC lpfnWndProc ;
int cbClsExtra ;
int cbWndExtra ;
HINSTANCE hInstance ;
HICON hIcon ;
HCURSOR hCursor ;
HBRUSH hbrBackground ;
LPCWSTR lpszMenuName ;
LPCWSTR lpszClassName ;
}
WNDCLASSW, * PWNDCLASSW, NEAR * NPWNDCLASSW, FAR * LPWNDCLASSW ;

与前者唯一的区别在於最後两个栏位定义为指向宽字串常数,而不是指向ASCII字串常数。

WINUSER.H定义了WNDCLASSA和WNDCLASSW结构(以及指向结构的指标)以後,表头档案依据对UNICODE识别字的解释,定义了WNDCLASS和指向WNDCLASS的指标(包括一些向後相容的程式码):

#ifdef UNICODE
typedef WNDCLASSW WNDCLASS ;
typedef PWNDCLASSW PWNDCLASS ;
typedef NPWNDCLASSW NPWNDCLASS ;
typedef LPWNDCLASSW LPWNDCLASS ;
#else
typedef WNDCLASSA WNDCLASS ;
typedef PWNDCLASSA PWNDCLASS ;
typedef NPWNDCLASSA NPWNDCLASS ;
typedef LPWNDCLASSA LPWNDCLASS ;
#endif

本书後面列出结构时,将只列出功用相同的结构定义,对WNDCLASS就像这样:

typedef struct
{
UINT style ;
WNDPROC lpfnWndProc ;
int cbClsExtra ;
int cbWndExtra ;
HINSTANCE hInstance ;
HI