在Win32静态库中加载XAML(WinRT / C ++)窗口

时间:2019-07-19 08:13:44

标签: c++ xaml winapi windows-runtime winrt-xaml

有两个项目的解决方案。 第一个是可执行文件,第二个是在可执行项目中加载的静态库。我的必要(所需)代码必须放在静态库中。通过帮助WinRT / C ++ API,必须加载并显示使用XAML布局描述的窗口。

在Win32项目中,有many examples时,窗口将使用UWP中的新项目,但这不是我所需要的。另外,XAML-Islands技术(即所谓的)需要最新版本的Windows 10(1903)。

我还发现了一些似乎可以满足我需要的示例,但是由于可执行线程的问题(据我了解),我的代码无法在静态库中执行:https://youtu.be/eHCDTsQrTX8

因此,我寻求帮助:如何在不破坏线程完整性的情况下,在Win32的静态库中加载和调用XAML窗口。谢谢。

1 个答案:

答案 0 :(得分:1)

从Windows 10 1903开始,进程是Win32进程或UWP进程。 Win32进程可以创建Win32窗口(HWND),但不能创建UWP窗口(CoreWindow)。对于UWP流程,反之亦然。因此,Win32进程无法直接创建CoreWindow。

您的选择是(1)创建一个Win32窗口并使用XAML岛在其中托管XAML UI,或者(2)使用Desktop Bridge将Win32应用程序与UWP应用程序捆绑在一起,并以最终用户的身份显示给最终用户一个组合的应用程序;然后,您可以使用进程间通信让UWP应用告诉Win32应用创建HWND,或者让Win32应用告诉UWP应用创建CoreWindow。