本机 C++ 将 IIterable 传递给 WinRT

Native C++ passing IIterable to WinRT

我有一个 Win32 应用程序正在使用 WRL(Windows 运行时模板库)来访问 WinRT API。

如何调用从本机 C++ 获取 IIterable 的函数?我的问题是获得实现 IIterableIVector.

的东西

作为一个具体的例子,假设我想在 Include.0.14393.0\winrt\windows.ui.input.h:

中调用 SetDefaultMenuItems
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;
        // ...
    };
}
}
}
}

似乎没有 IIterableIVector 的原生 C++ 实现。

我最终使用 cppwinrt 来做我想做的事。有了这个,我能够将 vanilla std 容器等传递给 WinRT。