In der Header-Datei WinUser.h
gibt es einen Teil, in dem die Konstanten des zweiten Parameters SetWindowLong()
definiert sind.Wie rufe ich SetWindowLong() in den 64-Bit-Versionen von Windows auf?
// ...
#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)
// ...
Aber sie sind direkt nach undefiniert, wenn _WIN64
definiert ist; und es ist in meinem 64-Bit-System definiert.
Wie Sie sehen, gibt es auch einen GWLP_***
Satz von Konstanten, aber sie sind nicht auf der Seite von SetWindowLong()
dokumentiert.
Warum sind diese Konstanten in x64-Systemen nicht definiert?
Wie lautet die alternative Methode, SetWindowLong()
in x64-Systemen aufzurufen?
Mein System:
OS: Windows 7 Ultimate x64 SP1
IDE: Visual Studio 2012 ultimative Update 3
Ganz oben in der Dokumentation befindet sich * Hinweis Diese Funktion wurde durch die SetWindowLongPtr-Funktion ersetzt. Verwenden Sie die SetWindowLongPtr-Funktion, um Code zu schreiben, der mit 32-Bit- und 64-Bitversion von Windows kompatibel ist. * – chris
@chir Ich kann diese Notiz in der Dokumentationsseite nicht finden, die ich in meiner Frage gab. – hkBattousai
Ich denke, die mobile Version der Dokumentation enthält keine Notiz. – chris