首頁 > 後端開發 > C++ > 為什麼我的DPI-Unaware應用程序突然變得DPI系統意識到?

為什麼我的DPI-Unaware應用程序突然變得DPI系統意識到?

Mary-Kate Olsen
發布: 2025-01-28 09:16:09
原創
237 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板