首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cppwinrt中使用带有处理程序对象的AddHandler?

如何在cppwinrt中使用带有处理程序对象的AddHandler?
EN

Stack Overflow用户
提问于 2020-10-16 03:49:18
回答 2查看 90关注 0票数 0

在C++/WinRT反射中,AddHandler接口被定义为

UIElement::AddHandler(Windows::UI::Xaml::RoutedEvent const& routedEvent, Windows::foundation::IInspectable const& handler, bool handledEventsToo) const

但是这些处理程序似乎只继承自IUnknown。例如,这是KeyEventHandler的声明

struct KeyEventHandler : Windows::foundation::IUnknown

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-16 07:10:52

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

票数 0
EN

Stack Overflow用户

发布于 2020-10-24 18:31:12

为了详细说明iohanson的答案,是的,需要对委托进行装箱。WinRT委托是IUnknown,而不是IInspectableAddHandler期望获得一个IReference<T>,其中TRoutedEvent的委托。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64378737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档