Maison > développement back-end > C++ > Pourquoi mon application DPI-UNAWARE a-t-elle soudainement été consciente du DPI-System?

Pourquoi mon application DPI-UNAWARE a-t-elle soudainement été consciente du DPI-System?

Mary-Kate Olsen
Libérer: 2025-01-28 09:16:09
original
263 Les gens l'ont consulté

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

DPI L'application non au courant est soudainement devenue consciente du système: guide de dépannage

Ce document aborde un scénario où une application précédemment DPI-UNAWARE est passé de manière inattendue au mode de conscience du système DPI sans modifications de code. Ce changement perturbe la dépendance de l'application à la virtualisation des fenêtres pour la mise à l'échelle.

Le problème: Une application, fonctionnant auparavant comme DPI, intention, présente désormais un comportement de conscience du système DPI.

Cause probable: La cause la plus probable est l'introduction d'une dépendance DPI-AWARE, directement ou indirectement. La référence des composants DPI-AWARE peut déclencher l'héritage de leur réglage de sensibilisation au DPI.

Stratégies de résolution:

Plusieurs méthodes peuvent restaurer le statut de DPI non au courant de l'application:

  1. Désactiver explicitement la conscience du DPI (assemblyinfo.cs): Ajoutez l'attribut suivant à votre fichier AssemblyInfo.cs pour remplacer tout paramètres de sensibilisation DPI hérités:

    <code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
    Copier après la connexion
  2. Configuration manifeste de l'application: Dans votre fichier manifeste d'application, définissez explicitement le mode DPI inhabituel:

    <code class="language-xml"><dpiaware>false</dpiaware></code>
    Copier après la connexion
  3. Approche de l'API Windows: Utilisez les fonctions API Windows appropriées pour définir le contexte de sensibilisation au DPI du processus:

    • Windows 7: SetProcessDPIAware()
    • Windows 8.1 et ultérieurement: SetProcessDpiAwareness() ou SetProcessDpiAwarenessContext()
    • Windows 10, version 1809 et ultérieurement: Utiliser SetProcessDpiAwarenessContext() avec DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED pour une compatibilité optimale.
  4. Per-Thread DPI Sensibilisation (si nécessaire): Pour un contrôle plus granulaire, envisagez d'utiliser SetThreadDpiAwarenessContext() pour gérer la conscience du DPI sur une base par thread. Cette approche est généralement moins préférée sauf si nécessaire.

En mettant en œuvre l'une de ces solutions, vous devriez être en mesure de revenir à votre application à son comportement DPI intentionné et de résoudre les problèmes de mise à l'échelle. Envisagez de tester soigneusement après la mise en œuvre de chaque méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal