In the header file WinUser.h
, there is a part in which the constants of the second parameter of SetWindowLong()
are defined.
// ...
#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)
// ...
But they are right after undefined if _WIN64
is defined; and it is defined in my 64-bit system.
As you see, there is also a GWLP_***
set of constants, but they are not documented in the page of SetWindowLong()
.
Why are these constants undefined in x64 systems?
What is the alternative way of calling SetWindowLong()
in x64 systems?
My system:
OS: Windows 7 Ultimate x64 SP1
IDE: Visual Studio 2012 Ultimate Update 3