Mise à l’échelle DPI système améliorée avec VS2017

J’ai une application MFC qui prend en charge par défaut le MFC DPI: elle est compatible avec un niveau de DPI élevé, mais pas par DPI. Windows 10 version 1703 a ajouté la prise en charge de la mise à l’échelle DPI (améliorée) du système . J’ai activé ce mode à partir de Windows Explorer dans les parameters de compatibilité .exe, et cela fonctionne pour mon application.

Dans le meilleur des cas, je rendrais l’application entièrement multi-moniteur conforme à DPI, mais c’est beaucoup de travail. Donc, à la place, je veux dire au système d’exploitation d’utiliser la mise à l’échelle DPI (améliorée) du système pour mon application, si le système d’exploitation le prend en charge.

Est-ce que le manifeste des applications le permet, et si oui, qu’est-ce qui doit être ajouté ou modifié?

En outre, comment modifier le manifeste? Actuellement, j’utilise la structure de projet par défaut de Visual Studio 2017 MFC, qui n’a pas de fichier manifeste dans mon projet. Au lieu de cela, le contenu du manifeste est spécifié en tant que propriétés du projet et le manifeste est généré avec mt.exe . Puis-je effectuer une modification avec mt.exe? Si je dois remplacer le manifeste par un manifeste, quel est le moyen le plus simple?

Ajoutez le paramètre gdiScaling au manifeste de votre application pour indiquer à Windows d’appliquer la mise à l’échelle GDI à tous les moniteurs.

  1. Créez un nouveau fichier GdiScaling.manifest dans votre projet.
    true    
  1. Dans les parameters du projet, dans l’Outil de manifeste, définissez Fichiers Manifestes Supplémentaires sur GdiScaling.manifest . Cela fusionnera vos parameters de mise à l’échelle GDI dans le rest du manifeste généré.

Lorsque vous construisez, vous recevrez un avertissement sur le fait que Microsoft n’a pas agi de concert, mais vous le saviez déjà. 🙂 Le texte exact de l’avertissement est le suivant:

GdiScaling.manifest: avertissement de création de manifeste 81010002: élément non reconnu “gdiScaling” dans l’espace de noms ” http://schemas.microsoft.com/SMI/2017/WindowsSettings “.

Heureusement, Windows ne se soucie pas et reconnaît le paramètre de toute façon.