CEF4Delphi程序启动后字体变小的问题

欢迎加入全网最大Delphi 技术交流群 682628230

在更新到CEF最新版本(如117.2.5)之后,您可能会遇到整个应用程序字体大小意外变小的情况。这种情况特别发生在从较旧版本(如96版)迁移过来时,并且只在某些机器上出现(例如Windows 10企业N版和Windows 10专业版64位),即使这些机器没有安装Delphi IDE进行调试。

可能的原因及解决方案:

Chromium设置Windows进程DPI感知:问题的根源在于新版Chromium会自动设置Windows进程的DPI感知属性,如果该属性未被设定的话。这可能导致您的32位Windows Delphi 2007应用中字体大小发生变化。

  • 添加应用程序清单文件:为了解决这个问题,您可以向项目中添加一个包含DPI感知设置的清单文件。以下是一个示例:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
      <asmv3:application>
        <asmv3:windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
          <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">unaware</dpiAwareness>
        </asmv3:windowsSettings>
      </asmv3:application>
    </assembly>
    • 这个清单文件将确保您的应用程序不会自动调整其DPI感知状态,从而避免字体大小变化的问题。

    • 调用SetProcessDpiAwareness函数:另一个方法是在加载CEF之前,通过调用SetProcessDpiAwareness(PROCESS_DPI_UNAWARE)来手动设置DPI感知级别。此API需要链接用户32库,并且应确保在初始化CEF前执行。

    通过上述任一方法,可以防止由于CEF加载导致的应用程序字体大小不期望的变化。此外,参考相关CEF问题讨论(如#3452, #484, 和 #489)可获取更多关于此类问题的信息及其解决策略。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享