Nel file di intestazione WinUser.h
, c'è una parte in cui sono definite le costanti del secondo parametro di SetWindowLong()
.Come si chiama SetWindowLong() nelle versioni a 64 bit di Windows?
// ...
#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)
// ...
ma sono subito dopo indefinito se _WIN64
è definito; ed è definito nel mio sistema a 64 bit.
Come si vede, c'è anche un set di costanti GWLP_***
, ma non sono documentate nella pagina di SetWindowLong()
.
Perché queste costanti non sono definite nei sistemi x64?
Qual è il modo alternativo di chiamare SetWindowLong()
in sistemi x64?
Il mio sistema:
OS: Windows 7 Ultimate x64 SP1
IDE di Visual Studio 2012 ultimo Update 3
Nella parte superiore della documentazione è * Nota Questa funzione è stata sostituita dalla funzione SetWindowLongPtr. Per scrivere codice compatibile con entrambe le versioni di Windows a 32 e 64 bit, utilizzare la funzione SetWindowLongPtr. * – chris
@chir Non riesco a trovare quella nota nella pagina di documentazione che ho fornito nella mia domanda. – hkBattousai
Suppongo che la versione mobile della documentazione non includa la nota. – chris