在更新到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