Windows runtime 我应该如何在cppwinrt中将AddHandler与处理程序对象一起使用?
在C++/WinRT反射中,API定义为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
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用户喜欢的那样做魔术。