转换为 HWND 时发出警告

Warning when casting int to HWND

我有一个用 C++ 为 Win64 编写的程序,它是从父程序执行的,需要将其父 window 设置为父程序的 window。父程序将它的 HWND 作为命令行参数传入,我在将参数转换为 [=12= 之前将其解析为 int(使用 stoi()) ].我的代码的简化版本如下所示:

int parentHwnd = stoi(args[HWND_INDEX]);
SetParent(childHwnd, (HWND) parentHwnd);

但是,编译时出现以下错误:

warning C4312: 'type cast': conversion from 'int' to 'HWND' of greater size

是否有安全的方法将 int 转换为 HWND 并消除此错误?或者我应该将给定的命令行 arg 解析为 int 以外的东西,这样可以安全地转换为 HWND?

  1. 传递 pointers/handles 时,您应该使用 std::stoull
  2. 并使用显式转换HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);