我有一个用 C++ 为 Win64 编写的程序,该程序从父程序执行,需要将其父窗口设置为父程序的窗口。父程序将它的 HWND
作为命令行参数传入,我将参数解析为 int
(使用 stoi()
) 在它被转换为 HWND
之前。我的代码的简化版本如下所示:
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
吗?
最佳答案
- 传递指针/句柄时,您应该使用 std::stoull ;
- 并使用显式转换
HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);
关于c++ - 转换为 HWND 时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507565/