現在、コードベースを変更して、64 ビット アーキテクチャでコンパイルできるようにしています。私が行わなければならない変更のほとんどは明らかですが、これは私を困惑させました. SetWindowPos
2 番目の引数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 の方法は確かにありますか?