我有一个MFC应用程序具有默认的MFC DPI支持:它是高DPI的意识,但不是每个监视器DPI的意识。 Windows 10版本1703增加了对系统(增强)DPI缩放的支持 。 我在.exe兼容性设置中从Windows资源pipe理器启用了此模式,并且适用于我的应用程序。
理想情况下,我会使应用程序完全多显示器DPI兼容,但这是相当数量的工作。 相反,如果操作系统支持,我想告诉操作系统对我的应用程序使用系统(增强)DPI缩放。
应用程序的清单是否启用了这个function,如果有的话,需要添加或更改哪些内容?
另外,如何修改清单? 目前,我正在使用默认的Visual Studio 2017 MFC项目结构,在我的项目中没有清单文件。 相反,清单的内容被指定为项目属性,清单是使用mt.exe生成的。 我可以使用mt.exe注入更改吗? 如果我需要用自定义的replace清单,最简单的方法是什么?
将gdiScaling设置添加到应用程序的清单中,以告诉Windows在所有显示器上应用GDI缩放。
GdiScaling.manifest
。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0"> <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings"> <gdiScaling>true</gdiScaling> </asmv3:windowsSettings> </asmv3:application> </assembly>
GdiScaling.manifest
。 这会将您的GDI缩放设置合并到生成的清单的其余部分。 当你建立起来,你会得到一个关于微软没有共同行动的警告,但是你已经知道了。 :-)警告的确切文本是这样的:
GdiScaling.manifest:清单创作警告81010002:命名空间“ http://schemas.microsoft.com/SMI/2017/WindowsSettings ”中无法识别的元素“gdiScaling”。
幸运的是,Windows并不关心和识别设置。