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

PerMonitorV2 DPI感知下TActionMainMenuBar与CustomTitleBar的RC文件字体异常求助

Delphi添加RC文件后DPI感知修复方案

当你添加与EXE同名的RC文件后,Delphi会优先加载RC里的资源配置,直接覆盖了Project Manifest中设置的DPI感知参数,这就是TActionMainMenuBar、CustomTitleBar出现字体模糊、UI失真的核心原因。需要在RC文件中手动补充DPI感知相关配置,具体操作如下:

  • 关联外部Manifest到RC文件
    如果之前已经在Project中配置好包含DPI参数的app.manifest文件,直接在RC里添加代码将Manifest嵌入资源:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "app.manifest"

    也可以用简化数值写法:

    1 24 "app.manifest"

    (注:1对应CREATEPROCESS_MANIFEST_RESOURCE_ID,24对应RT_MANIFEST资源类型)

  • 直接在RC中嵌入DPI感知Manifest内容
    不想依赖外部Manifest文件的话,可把完整Manifest代码直接写在RC里,示例如下:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST
      {
        "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
        "  <assemblyIdentity version=\"1.0.0.0\" processorArchitecture=\"*\" name=\"CodeTree\" type=\"win32\"/>"
        "  <application xmlns=\"urn:schemas-microsoft-com:asm.v3\">"
        "    <windowsSettings>"
        "      <dpiAware xmlns=\"http://schemas.microsoft.com/SMI/2005/WindowsSettings\">true/PM</dpiAware>"
        "      <dpiAwareness xmlns=\"http://schemas.microsoft.com/SMI/2016/WindowsSettings\">PerMonitorV2, PerMonitor</dpiAwareness>"
        "    </windowsSettings>"
        "  </application>"
        "</assembly>"
      }

    关键参数说明:

    • true/PM:声明程序同时支持系统级DPI感知和每显示器DPI感知
    • PerMonitorV2:Windows 10及以上系统支持的高级每显示器DPI模式,可完美适配多屏不同DPI场景,解决字体模糊、UI错位问题
  • 同步Project配置避免冲突
    打开Project Options -> Application -> Manifest,选择「Custom manifest」并指向你的app.manifest文件,确保Project和RC的配置完全一致,防止资源加载冲突。

  • 验证配置是否生效
    编译生成EXE后,用Resource Hacker工具打开EXE,查看「Manifest」节点内容,确认DPI感知相关配置已正确嵌入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:52:08