J'ai un WIN32 SW dont l'interface utilisateur a été conçue en 96 DPI, donc lorsque l'utilisateur change le DPI de Windows de 96 à 120 ou plus, l'interface utilisateur sera erronée. Je veux savoir s'il y a une API pour forcer mon SW à afficher l'interface utilisateur avec 96DPI.À propos du problème DPI
Répondre
À partir de Windows Vista, la mise à l'échelle de DPI est censée se faire automatiquement. Je n'ai aucune expérience directe de savoir comment il fonctionne, mais voici la page qui explique comment désactiver:
http://msdn.microsoft.com/en-us/library/ms701681(VS.85).aspx
Il n'y a pas d'API pour forcer votre application à afficher à 96DPI. Le DPI est un paramètre de périphérique et ne peut pas être contrôlé par application.
Si vous pouvez modifier votre programme, vous pouvez redimensionner votre interface utilisateur pour qu'elle s'affiche correctement en haute résolution. Vous devez appeler le GetDeviceCaps
; Plus précisément, vous devez calculer l'échelle X et Y en utilisant le nombre renvoyé pour LOGPIXELSX
et LOGPIXELSY
. Quelque chose comme ceci:
HDC hdc;
double m_dDPIScaleX = GetDeviceCaps(hdc, LOGPIXELSX)/96.0;
double m_dDPIScaleY = GetDeviceCaps(hdc, LOGPIXELSY)/96.0;
Vous pouvez également ajouter une clé appcompat pour votre application. La place pour cela dans le registre est:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Ce sont les par utilisateur les paramètres, il y a la même clé dans HKEY_LOCAL_MACHINE
, mais bien sûr, qui est un paramètre du système et exigera des privilèges élevés pour écrire à . Ajout d'une clé comme ceci:
"C:\path\to\app.exe"="HIGHDPIAWARE"
va permettre le drapeau de la compatibilité de votre programme, qui interrompra mise à l'échelle DPI. C'est pour Vista +.
SetProcessDPIAware est également une option, mais sachez qu'il existe un risque de condition de concurrence, selon la documentation.
- 1. À propos des détails du bug
- 2. A propos du traitement xsl
- 3. Problème à propos de l'écriture de fichiers python
- 4. Suppression du lien À propos du site maven
- 5. Un problème de sélection à propos de Jquery
- 6. À propos d'hibernate NamedNativeQuery
- 7. Erreur étrange ld à propos du symbole en double
- 8. À propos d'ASP.NET Gridview
- 9. à propos de stumbler
- 10. À propos Nouvelles Sitemap?
- 11. Windows GDI: horizontal/vertical DPI
- 12. À propos de l'interrogation DNS
- 13. À propos de Spring BeanFactory
- 14. Confusion à propos du flux de travail C#/Silverlight
- 15. Problème à propos de viewDidAppear créer une table à chaque fois, puis écrasé
- 16. À propos de JDBC RowSet
- 17. Question à propos de sémaphore
- 18. à propos de annotate django
- 19. À propos de l'hébergement asp.net
- 20. Confusion à propos de sitemap_index.xml
- 21. C# Mise à l'échelle du contenu UserControl pour correspondre aux utilisateurs Dpi/Taille de police
- 22. Définir le moniteur DPI dans WPF
- 23. Écrire des métadonnées dpi à une image jpeg en Java
- 24. Problème de taille de fenêtre DPI hors navigateur 3 hors navigateur
- 25. Confusion à propos de trois techniques d'optimisation
- 26. Recommandation de théorie à propos de LDAP
- 27. Une bonne boîte de dialogue "À propos"
- 28. ASP.NET MVC | Problème à propos de l'affichage du dialogue modal en utilisant le widget de dialogue jQuery
- 29. Conseil à propos de l'insertion dans SQLCE
- 30. Filtrage du contenu du texte sur certains critères, par ex. à propos de moi-même