Windows runtime 我应该如何在cppwinrt中将AddHandler与处理程序对象一起使用?

Windows runtime 我应该如何在cppwinrt中将AddHandler与处理程序对象一起使用?,windows-runtime,c++-winrt,cppwinrt,Windows Runtime,C++ Winrt,Cppwinrt,在C++/WinRT反射中,API定义为 UIElement::AddHandler(Windows::UI::Xaml::RoutedEvent const&RoutedEvent,Windows::foundation::IIInspectable const&handler,bool HandledEventsTo)const 但是处理程序似乎只继承自IUnknown。例如,这是以下声明: structKeyEventHandler:Windows::foundation::IUnknow

在C++/WinRT反射中,API定义为

UIElement::AddHandler(Windows::UI::Xaml::RoutedEvent const&RoutedEvent,Windows::foundation::IIInspectable const&handler,bool HandledEventsTo)const

但是处理程序似乎只继承自
IUnknown
。例如,这是以下声明:

structKeyEventHandler:Windows::foundation::IUnknown


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

似乎我们需要调用
box\u值(处理程序)
,将其转换为
IInspectable
。这一点都不明显,而且你在MSDN上找不到任何样本。

要详细说明iohanson的答案,是的,学员需要装箱。WinRT委托是
IUnknown
,而不是
IInspectable
AddHandler
希望获得
i引用
,其中
T
RoutedEvent
的委托

我打开了一个关于cppwinrt的问题,想看看我们是否可以得到一些更有用的重载,因为cppwinrt并不像CX用户喜欢的那样做魔术。