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