gpt4 book ai didi

c++ - 从 'OLE_HANDLE' 转换为 'HICON' 的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 10:55:33 24 4
gpt4 key购买 nike

对于 x64 目标构建,从“OLE_HANDLE”转换为“HICON”的正确方法是什么?

特别是对于普通的 C 风格转换,我在使用 x64 配置编译时收到此警告:

警告 C4312:“类型转换”:从“OLE_HANDLE”到更大尺寸的“HICON”的转换

这是有问题的代码:

imgList.Add((HICON)ohIcon);

上面的代码对我来说工作正常,但我想在为 x64 构建时摆脱警告。

最佳答案

H 泄露了它,在这种情况下,库代码创建了一个独特的类型,为您提供更多的类型安全性(在旧 C API 的时代)。

它们实际上都是 HANDLE,这是一个内核对象,它并不真正关心资源是什么,只关心您是否拥有它的“句柄”。记住 API 是 C 的,所以使用 C 风格的转换,当你要删除它时,使用 DeleteObject()。

编辑:64 位呃...问题是因为 MS 将句柄更新为 64 位,但单独留下了 OLE 的东西。幸运的是,他们所做的只是用零填充额外的位。

尝试使用 LongToHandle conversion routines并查看 MIDL porting guide - 向下滚动到“USER 和 GDI 句柄是符号扩展的 32b 值”部分。

关于c++ - 从 'OLE_HANDLE' 转换为 'HICON' 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/401812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com