转换为 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
?
- 传递 pointers/handles 时,您应该使用 std::stoull;
- 并使用显式转换
HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);
我有一个用 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
?
- 传递 pointers/handles 时,您应该使用 std::stoull;
- 并使用显式转换
HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);