- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的情况是我有一个 COM 对象,我需要在 come windows 中仅使用 C++ 代码。 COM 对象具有接受 SAFEARRAY 作为参数以传递字节数组的函数。在查看了 SAFEARRAY API ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms221145(v=vs.85).aspx ) 之后,我决定这不是我想要的,我应该找到一个面向对象的包装器。我试着寻找开源的,但没有找到。我发现微软创建了两个对象,好像封装了SAFEARRAY。看起来 CComSafeArray 正是我所需要的,而且 COleSafeArray 可能有用,但可能只是为了兼容旧版。
COleSafeArray 只是为了历史兼容性还是我遗漏了什么?
什么时候应该使用 COleSafeArray 而不是 CComSafeArray?
是否有任何值得研究的开源实现?
各自的优缺点是什么?
最佳答案
从类名上可以看出区别。
MFC COleSafeArray
旨在支持 OLE 自动化,实际上是 OLE VARIANT
结构(可以包含 SAFEARRAY
)的包装器。它通常适用于数组元素,因为它们属于 VARIANT
类型,因此您需要手动选择和提取适当的类型。
ATL CComSafeArray
旨在支持通用 COM 的 SAFEARRAY
,实际上是 SAFEARRAY
结构的包装器。它是用数组元素类型参数化的模板类。
一般来说,您应该使用 CComSafeArray
,它更容易和更简单,访问元素的方式几乎与常规数组/vector 相同。
VARIANT
参数的 OLE 自动化接口(interface),例如
COleSafeArray
有时可能更可取自动化 MS Office,使用 Visual Basic 组件等。在这种情况下,为了与 CComSafeArray
进行比较,您需要手动将其包装/解包到 VARIANT
对象。
关于c++ - COleSafeArray 与 CComSafeArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296910/
我发现很难找到清晰的示例来解释如何读取 COleSafeArray... 所以我有一个对象通过成员函数返回一个 _variant_t 实际上是一个 COleSafeArray 。我想读取它的元素并确保
我的情况是我有一个 COM 对象,我需要在 come windows 中仅使用 C++ 代码。 COM 对象具有接受 SAFEARRAY 作为参数以传递字节数组的函数。在查看了 SAFEARRAY A
我是一名优秀的程序员,十分优秀!