c++ - 转换为 HWND 时发出警告

标签 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. 传递指针/句柄时,您应该使用 std::stoull ;
  2. 并使用显式转换 HWND parentHwnd = (HWND)std::stoull(args[HWND_INDEX]);

关于c++ - 转换为 HWND 时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507565/

相关文章:

java - 如何避免从父类(super class)进行转换?

casting - 如何安全地、惯用地在数字类型之间进行转换?

c++ - 在 qtextedit 中更改滚动条值的信号

用于累积逗号分隔字符串的 C++ 预处理器宏

android - Mvvmcross 加载指示器未显示

c# - 是否有任何商业产品基于 SSRS 构建以在 Windows 应用程序中提供更丰富的用户体验?

c - 使用 CreateProcess,无法获取 CREATE_NO_WINDOW 来抑制控制台

c# - 将对象数组转换为不同的对象数组

c++ - 静态成员的静态数组 : possibility of initialization order fiasco

c++ - 将应用程序转换为使用 DLL 时的 LNK2019