如何在WinUI 3 C++/WinRT中更改应用图标?求XAML/C++代码示例
WinUI 3 C++/WinRT 更改应用图标的最简方式
一、最简配置方式(无需代码)
这是最省心的官方推荐方案,直接通过项目配置替换默认图标:
- 准备好包含多尺寸的图标文件(推荐
.ico格式,或多分辨率.png序列) - 在Visual Studio中右键项目 → 属性 → 配置属性 → 链接器 → 资源 → 输入 → 图标,替换为你的图标文件路径(例:
$(ProjectDir)Assets\MyAppIcon.ico) - 同步更新应用包清单(Package.appxmanifest):在「视觉元素」选项卡中,替换「图标」「徽标」对应的文件路径
二、代码方式(指定路径动态/静态设置)
如果需要动态控制或自定义标题栏图标,可使用以下代码:
1. C++/WinRT 动态设置窗口图标
在窗口初始化逻辑中添加:
#include <winrt/Microsoft.UI.Xaml.Window.h> #include <windows.h> // 获取当前窗口句柄 auto windowHandle = reinterpret_cast<HWND>(winrt::Microsoft::UI::Xaml::Window::Current().NativeWindow()); // 加载指定路径的图标文件 HICON hIcon = LoadImageW( nullptr, L"C:\\Your\\Icon\\Path\\CustomIcon.ico", // 替换为图标绝对路径 IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE ); // 设置窗口大/小图标 SendMessageW(windowHandle, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(hIcon)); SendMessageW(windowHandle, WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(hIcon));
2. XAML 静态设置自定义标题栏图标
若使用自定义标题栏,可直接在XAML中指定图标源:
<Grid> <!-- 自定义标题栏区域 --> <Image Width="32" Height="32" Source="ms-appx:///Assets/CustomTitleIcon.png"/> </Grid>
注意:需确保图标文件已在项目中设置「内容」属性,路径使用ms-appx:///协议指向项目Assets目录。
内容的提问来源于stack exchange,提问作者breadman
相关产品推荐
相关产品推荐

