現在、コードベースを変更して、64 ビット アーキテクチャでコンパイルできるようにしています。私が行わなければならない変更のほとんどは明らかですが、これは私を困惑させました. SetWindowPos2 番目の引数hWndInsertAfterがあります。これは、ウィンドウ ハンドル、または定義済みの値HWND_TOP、HWND_BOTTOM、HWND_TOPMOSTおよびHWND_NOTOPMOST( MSDN 情報については、こちらを参照してください) のいずれかです。これらの値は で定義されていWinUser.hます。
32 ビット アーキテクチャでは、呼び出しでこれらのいずれかを使用すると正常にSetWindowPos動作しますが、64 ビットでは、コンパイラは次のように文句を言います。
警告 C4306: '型キャスト': 'int' からより大きなサイズの 'HWND' への変換
これは、#defines が [32 ビット] 整数を HWND としてキャストしているためです。
#define HWND_TOPMOST ((HWND)-1)
コンパイラが警告をスローせずに 64 ビット アーキテクチャでこれをコンパイルするには、何を変更する必要がありますか? を使用して警告を無効にする#pragma warning( disable: 4306 )か、#define で 64 ビット int を使用して独自の定義を作成できますが、これを行う「適切な」Microsoft の方法は確かにありますか?