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

如何在Premake生成的VS C++项目中修改DPI清单设置

C++项目Visual Studio及Premake DPI感知清单配置方案

一、Visual Studio 手动配置步骤

  • 右击你的C++项目,选择「属性」打开项目配置页
  • 切换到「配置属性 → 清单工具 → 输入和输出」,将「嵌入清单」设置为「是 (/MANIFEST:EMBED)」
  • 切换到「配置属性 → 清单工具 → 高级」,找到「DPI感知」选项,根据需求选择对应级别:
    • 选「高 DPI 感知」对应系统级DPI适配
    • 选「每个监视器高 DPI 感知」对应多显示器不同DPI的自适应适配,兼容性更好
  • 保存配置后重新生成项目即可生效

如果需要手动指定自定义清单,可将写好的.manifest文件添加到项目,然后在「配置属性 → 清单工具 → 常规」的「附加清单文件」中填入你的清单文件路径即可。

二、Premake自动配置方案

高版本Premake(5.0 alpha 12及以上)

直接使用原生dpiawareness配置项即可,对应值可选:None(无DPI感知)、High(系统级DPI感知)、PerMonitor(每显示器DPI感知)、PerMonitorV2(每显示器V2版DPI感知,Win10 1703及以上支持,适配性最优)。
示例配置:

workspace "你的项目名称"
    configurations { "Debug", "Release" }
    architecture "x64"

project "你的应用名称"
    kind "WindowedApp"
    language "C++"
    files { "src/**.h", "src/**.cpp" }
    -- 配置DPI感知级别
    dpiawareness "PerMonitorV2"

低版本Premake兼容方案

如果使用的Premake版本不支持dpiawareness配置项,直接通过链接参数添加清单配置即可:

project "你的应用名称"
    -- 其他配置不变
    linkoptions {
        "/MANIFEST:EMBED",
        "/MANIFESTUAC:\"dpiAwareness=PerMonitorV2, PerMonitor, System\""
    }

配置完成后删除代码中SetProcessDPIAware()的调用即可,DPI感知会在进程启动时通过清单自动生效,不会出现运行时修改DPI感知导致的窗口闪烁、偏移问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:15:03