在头文件WinUser.h
中,有一部分SetWindowLong()
定义了第二个参数的常量。
// ...
#define GWL_WNDPROC (-4)
#define GWL_HINSTANCE (-6)
#define GWL_HWNDPARENT (-8)
#define GWL_STYLE (-16)
#define GWL_EXSTYLE (-20)
#define GWL_USERDATA (-21)
#define GWL_ID (-12)
#ifdef _WIN64
#undef GWL_WNDPROC
#undef GWL_HINSTANCE
#undef GWL_HWNDPARENT
#undef GWL_USERDATA
#endif /* _WIN64 */
#define GWLP_WNDPROC (-4)
#define GWLP_HINSTANCE (-6)
#define GWLP_HWNDPARENT (-8)
#define GWLP_USERDATA (-21)
#define GWLP_ID (-12)
// ...
但是它们紧跟在未定义的 if_WIN64
定义之后;它是在我的 64 位系统中定义的。
如您所见,还有一GWLP_***
组常量,但它们没有记录在SetWindowLong()
.
为什么这些常量在 x64 系统中未定义?在 x64 系统
中调用的替代方法是什么?SetWindowLong()
我的系统:
操作系统:Windows 7 Ultimate x64 SP1
IDE:Visual Studio 2012 Ultimate Update 3