当前位置: 代码迷 >> VC >> WNDCLASS的有关问题
  详细解决方案

WNDCLASS的有关问题

热度:2082   发布时间:2013-02-25 00:00:00.0
WNDCLASS的问题。
我在VC编译器里找到了这个。
#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 // UNICODE


然后我继续找下去。
typedef struct tagWNDCLASSA {
  UINT style;
  WNDPROC lpfnWndProc;
  int cbClsExtra;
  int cbWndExtra;
  HINSTANCE hInstance;
  HICON hIcon;
  HCURSOR hCursor;
  HBRUSH hbrBackground;
  LPCSTR lpszMenuName;
  LPCSTR lpszClassName;
} WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;

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;

我在MSDN上找到的、

typedef struct _WNDCLASS { 
  UINT style; 
  WNDPROC lpfnWndProc; 
  int cbClsExtra; 
  int cbWndExtra; 
  HINSTANCE hInstance; 
  HICON hIcon; 
  HCURSOR hCursor; 
  HBRUSH hbrBackground; 
  LPCTSTR lpszMenuName; 
  LPCTSTR lpszClassName; 
} WNDCLASS, *PWNDCLASS; 

这是为什么呢?

------解决方案--------------------------------------------------------
这是字符集的区别,MSDN 上只介绍一个通用的,实际库对不同的字符集有两个版本 UNICODE 和 多字符,也就是 tagWNDCLASSW 和 tagWNDCLASSA。编译器会根据你在项目属性中设置的不同的字符集选择对应的版本,不只是这个类,好多对象都是这样的,如CString等等。
  相关解决方案