【发布时间】:2017-09-30 22:22:46
【问题描述】:
我有一个我正在用 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?
【问题讨论】:
-
According to this,
HWND应该是符号扩展的。不知道如何最好地做到这一点,希望其中一位 C++ 专家能加入。 -
您还应该阅读Is it legal to have a cross-process parent/child or owner/owned window relationship? 关键引语:“是的,这在技术上是合法的。在技术上玩电锯也是合法的。”
-
(HWND)IntToPtr(parentHwnd)