当前位置:  开发笔记 > 编程语言 > 正文

从“ OLE_HANDLE”转换为“ HICON”的正确方法是什么?

如何解决《从“OLE_HANDLE”转换为“HICON”的正确方法是什么?》经验,为你挑选了1个好方法。

从x64目标版本的“ OLE_HANDLE”转换为“ HICON”的正确方法是什么?

特别是对于普通的C-Style强制转换,使用x64配置进行编译时会收到以下警告:

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

这是有问题的代码:

imgList.Add((HICON)ohIcon);

上面的代码对我来说很好用,但是在为x64构建时我想摆脱警告。



1> gbjbaanb..:

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

它们实际上都是HANDLE,这是一个内核对象,实际上并不关心资源是什么,只是您拥有一个“句柄”。请记住,API是C语言的,所以请使用C样式强制转换,而要删除它时,请使用DeleteObject()。

编辑:64位eh ...问题是因为MS将句柄更新为64位,但没有处理OLE。幸运的是,他们所做的就是用零填充额外的位。

尝试使用LongToHandle转换例程,并参阅MIDL移植指南 -向下滚动大约一半到“ USER和GDI句柄是符号扩展的32b值”部分。

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有