我应该如何在 cppwinrt 中将 AddHandler 与 Handler 对象一起使用?
How should I use AddHandler in cppwinrt with Handler objects?
在 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
在 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