Nous avons un problème avec l'une de nos applications existantes basées sur Win32 MFC. Elle ne s'affiche pas correctement sur les écrans qui utilisent des paramètres de ppp élevés. Plus précisément, sous Windows XP avec 120 ppp sélectionnés, il y a plusieurs endroits dans l'application où le texte s'agrandit mais pas ses conteneurs (texte débordant les limites de son bouton, etc.). Cela se produit également dans Windows 7 (et Vista) lorsque >96 dpi est sélectionné et que "utiliser la mise à l'échelle des dpi de style XP" est sélectionné. Si la mise à l'échelle de style XP n'est pas sélectionnée, je comprends que Win7 utilise la virtualisation DPI à la place. Tout semble correct lorsqu'on utilise la virtualisation du DPI (les choses sont floues, mais au moins elles sont correctes). Par défaut dans Win7, 120 dpi utilise la mise à l'échelle de style XP et le paramètre suivant (144 dpi) ne le fait pas. Notre application semble donc correcte à 144 dpi mais fausse à 120 dpi.
Si je modifie le manifeste des applications pour déclarer l'application comme "DPI aware", cela active la virtualisation du DPI (mais pas la mise à l'échelle du DPI à la manière de XP), mais cela ne me mène nulle part. Les choses ont toujours l'air très mauvaises (aucun changement pour 120 dpi, 144 dpi maintenant cassé).
J'ai besoin de résoudre ce problème et j'ai essayé de me documenter sur les problèmes de DPI et de mise à l'échelle en général, mais j'ai beaucoup appris. Jusqu'à présent, je n'ai pas trouvé de solution appropriée. Pour l'instant, je n'ai pas l'intention de faire une correction complète et correcte (l'application met correctement à l'échelle tous les éléments en fonction du dpi). Cela impliquerait BEAUCOUP de réécriture. Je pense qu'il y a vraiment deux solutions possibles. La première consiste à désactiver toute forme de mise à l'échelle du DPI. Cela signifie que si le système Win7 d'un utilisateur est réglé sur 120 dpi, tout ce qui se trouve sur son système aura l'air bon/grand, mais notre application aura l'air correcte mais sera petite par rapport à tout ce qui se trouve dans les autres applications. La deuxième solution consisterait à forcer notre application à utiliser la virtualisation du DPI mais à ne jamais utiliser la mise à l'échelle du DPI à la manière de XP. Je veux que ce soit un changement du côté de l'application et que les utilisateurs finaux ne soient pas obligés de modifier la configuration de Windows.
Jusqu'à présent, je n'ai pas trouvé de moyen de réaliser ces deux solutions.
Quelqu'un de plus compétent en la matière peut-il me répondre et me mettre sur la bonne voie ?
Gracias