问题描述
在C ++ / WinRT反射中,API AddHandler被定义为
UIElement::AddHandler(Windows::UI::Xaml::RoutedEvent const& routedEvent,Windows::foundation::IInspectable const& handler,bool handledEventsToo) const
但是处理程序似乎仅从IUnkNown
继承。例如,这是KeyEventHandler的声明:
struct KeyEventHandler : Windows::foundation::IUnkNown
解决方法
似乎我们需要调用box_value(handler)
,将其转换为IInspectable
。这一点一点都不明显,您在MSDN上找不到任何示例。
要详细说明iohanson的答案,是的,代表需要装箱。 WinRT代表是IUnknown
,而不是IInspectable
。 AddHandler
期望得到一个IReference<T>
,其中T
是RoutedEvent
的委托。
我在cppwinrt上开了一个问题,以查看是否可以获得更多有用的重载,因为cppwinrt我们没有像CX用户那样享受魔术般的拳击乐趣。 https://github.com/microsoft/cppwinrt/issues/776