WinRT WRL ABI 集合

Posted

技术标签:

【中文标题】WinRT WRL ABI 集合【英文标题】:WinRT WRL ABI collections 【发布时间】:2016-01-03 13:58:35 【问题描述】:

我尝试使用 WRL 并坚持收藏。

我需要传递函数附加属性:

ABI::Windows::Devices::Enumeration::IDeviceInformationStatics::FindAllAsyncAqsFilterAndAdditionalProperties(
  /* [in] */ __RPC__in HSTRING aqsFilter,
  /* [in] */ __RPC__in_opt ABI::Windows::Foundation::Collections::IIterable<HSTRING>* additionalProperties, ...)

但是IIterable没有填充方法,和IVector&lt;T&gt;(有填充方法,但是抽象接口)没有联系。

我是否需要实现我自己的向量,例如there,或者是否有更简单的方法来处理集合?在这些接口下,什么样的集合返回 ABI 函数?

【问题讨论】:

您需要实现自己的 IVector。 这个函数在'ABI::Windows::Foundation::Collections::IVectorView'中返回结果,我只是给它一个指向这个'IVectorView'的非初始化指针。结果已实现并具有 GetAt(N) 等工作方法。我可以使用相同的实现吗?我还读到 collections.h 用标准容器实现了这个接口,但我在那里看到的只是 c++/cx 代码。 @РомаАрхипкин:嘿,我知道这已经有一段时间了,但你解决了吗?如果是这样,您能否发布一个代码示例,说明您如何初始化 IIterable&lt;HSTRING&gt; 参数? 正如@Damyan 回答的那样,您需要实现自己的向量或使用link 我发布的问题。还有一个示例代码如何使用它 【参考方案1】:

您需要实现自己的(或重复使用您发布的链接中的那些)。

请注意,IIterable 确实有一个方法“First”,如果您想自己实现,您可以实现它。查看 windows.foundation.collections.h 了解更多详情。

【讨论】:

以上是关于WinRT WRL ABI 集合的主要内容,如果未能解决你的问题,请参考以下文章

如何在“native c ++”环境中使用WinRT IAsyncOperation *对象

我应该链接什么库来获得WinRT的“EXTERN_C const IID IID ___ x_ABI_ *”的正确定义

我可以从 Qt 应用程序访问哪种类型的 WinRT API?

ListView绑定到一个集合,如何访问父类中的事件?

使用 MeshLab 结果将 .wrl (VRML) 转换为 .dae (COLLADA) 缺少颜色

使用 glDrawElements 从 WRL (VRML) 文件中绘制对象