ヘッダファイルWinUser.h
には、第2パラメータの定数がSetWindowLong()
と定義されている部分があります。64ビットバージョンのWindowsで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)
// ...
しかし_WIN64
が定義されている場合、彼らは未定義の後に正しいです。私の64ビットシステムで定義されています。
ご覧のとおり、GWLP_***
の定数セットもありますが、SetWindowLong()
のページには記載されていません。
なぜこれらの定数はx64システムでは未定義ですか?
x64システムでSetWindowLong()
を呼び出す代替手段は何ですか?
私のシステム:
OS:Windows 7の究極のx64 SP1
IDE:Visual Studioの2012アルティメットアップデート3
ドキュメントの先頭にあります。注:この関数は、SetWindowLongPtr関数に取って代わりました。 * Windowsの32ビット版と64ビット版の両方に互換性のあるコードを書くには、SetWindowLongPtr関数を使用してください。* – chris
@chir私の質問に書かれたドキュメントページでそのメモを見つけることができません。 – hkBattousai
ドキュメントのモバイル版にはノートが含まれていないと思います。 – chris