Heim > Backend-Entwicklung > C++ > Warum wurde meine DPI-Bewusstseinsanwendung plötzlich das DPI-System bewusst?

Warum wurde meine DPI-Bewusstseinsanwendung plötzlich das DPI-System bewusst?

Mary-Kate Olsen
Freigeben: 2025-01-28 09:16:09
Original
300 Leute haben es durchsucht

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

DPI Ohne weiße Anwendung wurde plötzlich das System bewusst: Fehlerbehebungshandbuch

Dieses Dokument befasst sich mit einem Szenario, in dem eine zuvor bewartte DPI-Anwendung unerwartet auf DPI-System-AWARE-Modus ohne Codeänderungen übergeht. Diese Verschiebung stört das Vertrauen der Anwendung in die Windows -Virtualisierung zur Skalierung.

Das Problem: Eine Anwendung, die zuvor als DPI nicht bekannt ist, weist jetzt ein DPI -System auf das Verhalten auf.

Wahrscheinliche Ursache: Die wahrscheinlichste Ursache ist die Einführung einer DPI-bewussten Abhängigkeit, entweder direkt oder indirekt. Referenzierung von DPI-bewahrten Komponenten kann die Vererbung ihrer DPI-Bewusstseinseinstellung auslösen.

Auflösungsstrategien:

Verschiedene Methoden können den DPI des Anwendung wiederherstellen:

  1. Deaktivieren Sie explizit das DPI -Bewusstsein (AssemblyInfo.cs): Fügen Sie das folgende Attribut Ihrer AssemblyInfo.cs -Datei hinzu, um alle ererbten DPI -Awareness -Einstellungen zu überschreiben:

    [assembly: System.Windows.Media.DisableDpiAwareness]
    Nach dem Login kopieren
  2. App Manifest -Konfiguration: In Ihrer Anwendungsmanifestdatei setzen

    <dpiaware>false</dpiaware>
    Nach dem Login kopieren
  3. Windows -API -Ansatz: Verwenden Sie die geeigneten Windows -API -Funktionen, um den DPI -Bewusstseinskontext des Prozesses festzulegen:

    • Windows 7: SetProcessDPIAware()
    • Windows 8.1 und später: oder SetProcessDpiAwareness() SetProcessDpiAwarenessContext()
    • Windows 10, Version 1809 und später: Verwenden Sie mit SetProcessDpiAwarenessContext() für eine optimale Kompatibilität. DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
  4. DPI-Bewusstsein pro Thread (falls erforderlich): Für eine körnigere Kontrolle über die Verwendung von , um das DPI-Bewusstsein auf einer Thread-Basis zu verwalten. Dieser Ansatz ist im Allgemeinen weniger bevorzugt, es sei denn, dies ist absolut notwendig. SetThreadDpiAwarenessContext()

Durch die Implementierung einer dieser Lösungen sollten Sie in der Lage sein, Ihre Anwendung auf das beabsichtigte DPI -nicht bewusstes Verhalten zu bringen und die Skalierungsprobleme zu lösen. Überlegen Sie sich nach der Implementierung jeder Methode gründlich zu testen.

Das obige ist der detaillierte Inhalt vonWarum wurde meine DPI-Bewusstseinsanwendung plötzlich das DPI-System bewusst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage