本机 C++ 将 IIterable 传递给 WinRT
Native C++ passing IIterable to WinRT
我有一个 Win32 应用程序正在使用 WRL(Windows 运行时模板库)来访问 WinRT API。
如何调用从本机 C++ 获取 IIterable
的函数?我的问题是获得实现 IIterable
或 IVector
.
的东西
作为一个具体的例子,假设我想在 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;
// ...
};
}
}
}
}
似乎没有 IIterable
或 IVector
的原生 C++ 实现。
我最终使用 cppwinrt 来做我想做的事。有了这个,我能够将 vanilla std 容器等传递给 WinRT。
我有一个 Win32 应用程序正在使用 WRL(Windows 运行时模板库)来访问 WinRT API。
如何调用从本机 C++ 获取 IIterable
的函数?我的问题是获得实现 IIterable
或 IVector
.
作为一个具体的例子,假设我想在 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;
// ...
};
}
}
}
}
似乎没有 IIterable
或 IVector
的原生 C++ 实现。
我最终使用 cppwinrt 来做我想做的事。有了这个,我能够将 vanilla std 容器等传递给 WinRT。