2012-07-12 43 views
0

我有一个应用程序设置为三层蛋糕:上层和下层支持WinRT,但中间不支持。那些较高和较低的WinRT层需要共享对应用程序的CoreWindow对象的引用,但他们的唯一通信通道是通过中间层。我只能通过它的中间非WinRT层。我如何通过中间的非WinRT层传递CoreWindow对象?通过非WinRT代码传递WinRT对象类型。

从CoreWindow ^转换为void *不会给我任何编译器的抱怨,但是回到CoreWindow ^会给我类型转换错误。

+0

呵呵,在编译器中遗留了一些C++/CLI遗留问题。 – 2012-07-12 21:36:01

+3

内部深处,它是一个COM接口指针。随意通过'IUnknown *'。在C++/CX的环境中,'reinterpret_cast'编译成QueryInterface()调用。 – 2012-07-13 17:26:18

+0

Seva说什么 - 如果你有一个winrt对象,并且需要从非C++/CX元素处理它,请使用IUnknown - 所有的winrt接口直接从IInspectable派生,IInspectable派生直接从IUnknown派生。 – 2012-07-14 05:50:54

回答

0

当然,我只是在发布后才弄明白:我用reinterpret_cast < CoreWindow ^>(windowPtr)。