当窗口设置为“将文本大小调整为“125%”时,我的 Win32 应用程序的 UI(但不是它的窗口大小)会按比例放大。这会导致文本字符串被截断并且 UI 元素从窗口边缘消失。
我想防止这种情况发生,这样文本就不会按比例放大,并且应用程序会正确显示。由于正确获取这个旧的旧应用程序 DPI 感知的时间投入太高,我只想通过调整 UI 元素的大小来防止 Windows 破坏 UI 来使该应用程序可用。
我曾尝试在启动期间调用 SetProcessDPIAware(),但当它不起作用时,表明应用程序在其清单中是 DPI Aware。但是,这些措施都没有任何效果。
我用来指定 DPI 感知的清单片段:
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<asmv3:application
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>