Rumah >pembangunan bahagian belakang >C++ >Kenapa aplikasi DPI-Unaware saya tiba-tiba menjadi Sistem DPI yang sedar?
aplikasi dpi tidak menyedari tiba -tiba menjadi sistem sedar: Panduan penyelesaian masalah
Dokumen ini menangani satu senario di mana aplikasi DPI-Unaware sebelum ini tidak disangka-sangka beralih ke mod sedar sistem DPI tanpa perubahan kod. Peralihan ini mengganggu pergantungan aplikasi pada virtualisasi Windows untuk skala.
Masalah: Aplikasi, sebelum ini beroperasi sebagai DPI tidak menyedari, kini mempamerkan tingkah laku sedar sistem DPI.
kemungkinan penyebab: Sebab yang paling mungkin adalah pengenalan kebergantungan DPI, sama ada secara langsung atau tidak langsung. Rujukan Komponen DPI-Aware boleh mencetuskan warisan tetapan kesedaran DPI mereka.
Strategi Resolusi:
Beberapa kaedah boleh memulihkan status DPI yang tidak menyedari aplikasi:
secara jelas melumpuhkan kesedaran DPI (AssemblyInfo.cs): Tambahkan atribut berikut ke fail anda untuk mengatasi sebarang tetapan kesedaran DPI yang diwarisi: AssemblyInfo.cs
<code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
Konfigurasi Manifest App: Dalam fail manifes aplikasi anda, secara eksplisit menetapkan mod dpi yang tidak disedari:
<code class="language-xml"><dpiaware>false</dpiaware></code>
Windows 7:
SetProcessDPIAware()
Windows 8.1 dan kemudian: SetProcessDpiAwareness()
SetProcessDpiAwarenessContext()
Windows 10, versi 1809 dan kemudian: SetProcessDpiAwarenessContext()
DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
untuk menguruskan kesedaran DPI secara per-thread. Pendekatan ini pada umumnya kurang disukai kecuali benar -benar diperlukan.
SetThreadDpiAwarenessContext()
Atas ialah kandungan terperinci Kenapa aplikasi DPI-Unaware saya tiba-tiba menjadi Sistem DPI yang sedar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!