将int转换为HWND时发出警告

时间:2017-09-30 22:22:47

标签: c++ windows casting hwnd

我有一个程序,我在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吗?

1 个答案:

答案 0 :(得分:0)

  1. 传递指针/句柄时,应使用std::stoull;
  2. 并使用显式广告HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);