首页 >后端开发 >C++ >为什么我的DPI-Unaware应用程序突然变得DPI系统意识到?

为什么我的DPI-Unaware应用程序突然变得DPI系统意识到?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-28 09:16:09274浏览

Why Did My DPI-Unaware Application Suddenly Become DPI-System Aware?

dpi不知道应用程序突然变得系统意识:故障排除指南

>本文档解决了一个方案,其中以前的DPI-Unaware应用程序意外地转换为DPI-System Aware Mode而没有代码更改。 此班次破坏了应用程序对Windows虚拟化以进行缩放的依赖。

>

>问题:>以前以DPI不知道的应用程序,现在表现出DPI系统意识到行为。

>可能是原因:最可能的原因是直接或间接地引入了DPI Aware的依赖性。 引用DPI意识的组件可以触发其DPI意识设置的继承。

分辨率策略:

    >明确禁用DPI意识(assemblyInfo.cs):
  1. 将以下属性添加到您的

    >文件中以覆盖任何继承的DPI意识设置:> AssemblyInfo.cs

    <code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
  2. 应用清单配置:
  3. 在您的应用程序清单文件中,明确设置DPI不知道模式:

    <code class="language-xml"><dpiaware>false</dpiaware></code>
  4. Windows API方法:
  5. >使用适当的Windows API函数来设置该过程的DPI意识上下文:

    Windows 7:
    • Windows 8.1和更高版本:SetProcessDPIAware()
    • SetProcessDpiAwareness()> SetProcessDpiAwarenessContext()
    • > Windows 10,版本1809及以后:
    • 使用 SetProcessDpiAwarenessContext()以进行最佳兼容性。DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
  6. 每线DPI意识(如果需要的话):对于更颗粒状的控制,请考虑使用>以每个线程为基础管理DPI意识。 除非绝对必要,否则通常不太喜欢这种方法。SetThreadDpiAwarenessContext()>

>通过实施这些解决方案之一,您应该能够将应用程序恢复到其预期的DPI不知道的行为并解决缩放问题。 实施每种方法后考虑彻底测试。

>

以上是为什么我的DPI-Unaware应用程序突然变得DPI系统意识到?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn