Rumah > pembangunan bahagian belakang > C++ > Kenapa aplikasi DPI-Unaware saya tiba-tiba menjadi Sistem DPI yang sedar?

Kenapa aplikasi DPI-Unaware saya tiba-tiba menjadi Sistem DPI yang sedar?

Mary-Kate Olsen
Lepaskan: 2025-01-28 09:16:09
asal
266 orang telah melayarinya

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

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:

  1. 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>
    Salin selepas log masuk
  2. Konfigurasi Manifest App: Dalam fail manifes aplikasi anda, secara eksplisit menetapkan mod dpi yang tidak disedari:

    <code class="language-xml"><dpiaware>false</dpiaware></code>
    Salin selepas log masuk
  3. Pendekatan Windows API Windows:
  4. Gunakan fungsi API Windows yang sesuai untuk menetapkan konteks kesedaran DPI proses:

    Windows 7:
    • SetProcessDPIAware() Windows 8.1 dan kemudian:
    • atau SetProcessDpiAwareness() SetProcessDpiAwarenessContext() Windows 10, versi 1809 dan kemudian:
    • Gunakan
    • dengan untuk keserasian yang optimum. SetProcessDpiAwarenessContext() DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
  5. per-thread kesedaran DPI (jika diperlukan):
  6. Untuk lebih banyak kawalan berbutir, pertimbangkan untuk menggunakan

    untuk menguruskan kesedaran DPI secara per-thread. Pendekatan ini pada umumnya kurang disukai kecuali benar -benar diperlukan. SetThreadDpiAwarenessContext()

    Dengan melaksanakan salah satu penyelesaian ini, anda harus dapat mengembalikan permohonan anda kepada tingkah laku DPI yang tidak disedari dan menyelesaikan masalah skala. Pertimbangkan ujian dengan teliti setelah melaksanakan setiap kaedah.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan