我目前正在更改我们的代码库以使其在 64 位架构下编译。我必须做出的大部分改变都是显而易见的,但这让我很困惑。 SetWindowPos
有第二个参数,hWndInsertAfter
可以是窗口句柄,也可以是预定义值之一HWND_TOP
,和(有关 MSDN 信息,请参见HWND_BOTTOM
此处)。这些值在 中定义。HWND_TOPMOST
HWND_NOTOPMOST
WinUser.h
在 32 位架构中,在调用中使用其中一个可以SetWindowPos
正常工作,但在 64 位中,编译器会抱怨:
警告 C4306:“类型转换”:从“int”转换为更大尺寸的“HWND”
这是因为#defines 将 [32-bit] 整数转换为 HWND,例如:
#define HWND_TOPMOST ((HWND)-1)
我需要更改哪些内容才能在 64 位架构中编译而编译器不会发出警告?我可以使用 禁用警告#pragma warning( disable: 4306 )
,或者在#define 中使用 64 位 int 进行我自己的定义,但肯定有一种“正确”的 Microsoft 方式来执行此操作吗?