在 C++ Win32 项目中使用 WinUI3 窗口
在 C++ Win32 项目中使用 WinUI3 窗口
背景
在已有的 Windows 图形界面程序中,引入现代的 WinUI3 窗口,相比把所有代码迁移到 WinUI3 项目中,是一个成本较低的成本的改进体验的方案。
代码的组织和编写方式,可以参考已有的文章,这里是链接 []https://www.codeproject.com/articles/WinUI3-in-Existing-Win32-Applications](https://www.codeproject.com/articles/WinUI3-in-Existing-Win32-Applications)。
然而,上面外国人写的这篇文章里,很多需要作的工作并没有提到,有以几点:
- 怎么在 Win32 项目中引入 WinUI3 依赖项;添加了依赖项,才能让
C++编译器和链接器正确找到 WinUI3 头文件和库文件; - 怎么让
nuget管理引入的依赖项;让nuget管理依赖项后,方便使用nuget升级依赖项。
如果是用 VC++ 创建的 WinUI3 项目,上面两个工作会自动在创建项目时完成,不需手工做。然而在 Win32 项目中,需手工做。
操作步骤
在 C++ Win32 项目中引入 WinUI3 依赖项
-
创建一个
C++的空白应用,已打包(桌面版中的 WinUI3)项目,如下图所示,假设其名字是project_winui3; -
接下来,再创建一个
C++Windows 桌面程序,假设其名字是project_win32。
上面两步,应该比较容易,不是重点。不会操作的可以发私信问我。
project_winui3.vcxproj 里有完整的 WinUI3 依赖配置,现在要做的是,根据 project_winui3.vcxproj ,修改 project_win32.vcxproj。.vcxproj 是 VC++ 的项目文件,现在需要手工修改。
用你熟悉的编辑器,分别打开 project_winui3.vcxproj 和 project_win32.vcxproj。
接下来要做的是:
- 把
project_winui3.vcxproj文件中开头的以<import project开头的行,复制到project_win32.vcxproj文件的
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
这一行下面。复制完成后的样子是这样的(注意:只是示意,依赖项版本可能会不一致):
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.Windows.SDK.BuildTools.10.0.26100.7463\build\Microsoft.Windows.SDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.Windows.SDK.BuildTools.10.0.26100.7463\build\Microsoft.Windows.SDK.BuildTools.props')" />
<Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.1.8.251106002\build\native\Microsoft.WindowsAppSDK.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.1.8.251106002\build\native\Microsoft.WindowsAppSDK.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.WinUI.1.8.251105000\build\native\Microsoft.WindowsAppSDK.WinUI.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.WinUI.1.8.251105000\build\native\Microsoft.WindowsAppSDK.WinUI.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.Widgets.1.8.250904007\build\native\Microsoft.WindowsAppSDK.Widgets.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.Widgets.1.8.250904007\build\native\Microsoft.WindowsAppSDK.Widgets.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.Runtime.1.8.251106002\build\native\Microsoft.WindowsAppSDK.Runtime.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.Runtime.1.8.251106002\build\native\Microsoft.WindowsAppSDK.Runtime.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.ML.1.8.2109\build\native\Microsoft.WindowsAppSDK.ML.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.ML.1.8.2109\build\native\Microsoft.WindowsAppSDK.ML.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.AI.1.8.39\build\native\Microsoft.WindowsAppSDK.AI.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.AI.1.8.39\build\native\Microsoft.WindowsAppSDK.AI.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.Foundation.1.8.251104000\build\native\Microsoft.WindowsAppSDK.Foundation.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.Foundation.1.8.251104000\build\native\Microsoft.WindowsAppSDK.Foundation.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.InteractiveExperiences.1.8.251104001\build\native\Microsoft.WindowsAppSDK.InteractiveExperiences.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.InteractiveExperiences.1.8.251104001\build\native\Microsoft.WindowsAppSDK.InteractiveExperiences.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.DWrite.1.8.25090401\build\Microsoft.WindowsAppSDK.DWrite.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.DWrite.1.8.25090401\build\Microsoft.WindowsAppSDK.DWrite.props')" />
<Import Project="..\packages\Microsoft.WindowsAppSDK.Base.1.8.250831001\build\native\Microsoft.WindowsAppSDK.Base.props" Condition="Exists('..\packages\Microsoft.WindowsAppSDK.Base.1.8.2508310

最低0.47元/天 解锁文章
1316

被折叠的 条评论
为什么被折叠?



