0
我有一个使用WRL(Windows运行时模板库)访问WinRT API的Win32应用程序。本地C++将IIterable传递给WinRT
我该如何去调用一个函数,该函数需要从本机C++获取IIterable
?我的问题是获得实施IIterable
或IVector
的东西。
举一个具体的例子,假设我想叫在SetDefaultMenuItems
包含\ 10.0.14393.0 \ WinRT的\ windows.ui.input.h:
namespace ABI {
namespace Windows {
namespace UI {
namespace Input {
MIDL_INTERFACE("A6B79ECB-6A52-4430-910C-56370A9D6B42")
IRadialControllerConfiguration : public IInspectable
{
public:
virtual HRESULT STDMETHODCALLTYPE SetDefaultMenuItems(
/* [in] */ __RPC__in_opt __FIIterable_1_Windows__CUI__CInput__CRadialControllerSystemMenuItemKind *buttons) = 0;
// ...
};
}
}
}
}
似乎没有成为一个股票实施原生C++的IIterable
或IVector
。
你可以在一个'std :: vector'上构造一个[VectorView](https://code.msdn.microsoft.com/windowsapps/Windows-Runtime-Component-9b6c6989/sourcecode?fileId=113783&pathId=1623023906)或任何其他适合您的标准C++集合类型的容器包装器。 – IInspectable
我需要创建一个实现IVectorView的运行时组件。然后我应该尝试使用该自定义组件将IIterable传递给API? –
没有'IVectorView'接口。 'VectorView'是一个类模板,它实现了'IIterable'接口。您可以立即将指向'VectorView'的指针传递给期望有'IIterable'接口的函数。这听起来像是你完全迷失在这里,可能是因为你不了解COM,C++,或者C++如何用于实现COM。然后WRL再添加一个你需要先掌握的抽象。这不太可能结束。你必须重新开始并熟悉基础知识。 – IInspectable