You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMake中添加#include <winrt/Windows.UI.ViewManagement.h>引用

解决Win32项目中引用WinRT头文件的CMake配置方法

直接修改你的CMakeLists.txt,添加WinRT依赖的SDK配置、C++标准设置以及链接必要的库,完整配置如下:

cmake_minimum_required(VERSION 3.0.0)
project(BOLTgui VERSION 0.1.0)

# 指定使用Windows 10 SDK,确保能找到WinRT相关头文件
set(CMAKE_SYSTEM_VERSION 10.0)
# 设置C++标准为C++17及以上,WinRT API要求此版本支持
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(CTest)
enable_testing()

add_executable(BOLTgui main.cpp)

# 链接WinRT API所需的核心库
target_link_libraries(BOLTgui PRIVATE windowsapp.lib)

关键配置说明:

  • set(CMAKE_SYSTEM_VERSION 10.0):强制CMake使用Windows 10 SDK,WinRT的头文件和库都包含在这个SDK中,避免因SDK版本过低找不到头文件。
  • set(CMAKE_CXX_STANDARD 17):C++/WinRT依赖C++17及以上的语言特性,必须开启才能正常编译WinRT相关代码。
  • target_link_libraries(BOLTgui PRIVATE windowsapp.lib):Windows App SDK的核心库,是调用WinRT API的必要链接依赖,缺少它会出现链接错误。

如果自动识别头文件仍有问题,可额外添加手动指定WinRT头文件目录的配置(通常无需手动设置,仅作备选):

target_include_directories(BOLTgui PRIVATE "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}/winrt")

另外,在代码中使用WinRT API前,需要先初始化WinRT环境,示例代码如下:

#include <winrt/Windows.UI.ViewManagement.h>
#include <winrt/base.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    // 初始化WinRT公寓环境
    winrt::init_apartment();

    // 获取系统深色/浅色模式的背景色
    auto uiSettings = winrt::Windows::UI::ViewManagement::UISettings();
    auto bgColor = uiSettings.GetColorValue(winrt::Windows::UI::ViewManagement::UIColorType::Background);
    // 后续可使用bgColor设置窗口背景
    // ...
}

内容的提问来源于stack exchange,提问作者CHRssg gg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:16:15