0

在 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

注册事件处理程序的解决方案是什么?

4

2 回答 2

0

似乎我们需要调用box_value(handler)which 会将其转换为IInspectable. 这一点都不明显,你在 MSDN 上找不到任何示例。

于 2020-10-15T23:10:51.643 回答
0

要详细说明 iohanson 的答案,是的,代表需要被装箱。WinRT 代表是IUnknown,不是IInspectableAddHandler期望得到一个IReference<T>whereT是 a 的代表RoutedEvent

我在 cppwinrt 上打开了一个问题,看看我们是否可以得到一些更有用的重载,因为 cppwinrt 我们不会像 CX 用户喜欢的那样做魔术拳击。 https://github.com/microsoft/cppwinrt/issues/776

于 2020-10-24T10:31:12.340 回答