Estamos teniendo un problema con una de nuestras aplicaciones basadas en Win32 MFC. No se procesa correctamente en pantallas que usan configuraciones de dpi altas. Más específicamente en Windows XP con 120 ppp seleccionados, hay varios lugares en la aplicación donde el texto se amplía pero no sus contenedores (el texto sobrepasa los límites de su botón, etc.). Esto también ocurre en Windows 7 (y Vista) cuando se selecciona> 96 ppp y se selecciona "usar escalado de dpi de estilo XP". Si no se selecciona la escala de estilo de xp, entonces entiendo que Win7 usa virtualización de DPI. Todo se ve bien cuando se usa la virtualización DPI (las cosas están bien borrosas, pero al menos son correctas). De forma predeterminada, en Win7, 120 ppp utiliza la escala de estilo xp y la siguiente configuración (144 ppp) no. Por lo tanto, nuestra aplicación parece correcta a 144 ppp pero incorrecta a 120 ppp.Aplicación para Windows - Problemas DPI
Si edito el manifiesto de las aplicaciones para declarar la aplicación como "DPI consciente", esto cambia de virtualización DPI (pero no de escala de dpi de estilo XP) y esto no me lleva a ninguna parte. Las cosas todavía se ven muy mal (no hay cambio para 120 ppp, ahora 144 ppp están rotos).
Necesito solucionar este problema y he intentado leer sobre DPI/problemas de escala en general y ha sido una experiencia de aprendizaje. Hasta ahora no he encontrado una solución adecuada. Por el momento, actualmente no tengo intención de hacer una corrección completa y correcta (la aplicación escala correctamente todos los elementos de acuerdo con los ppp). Eso implicaría MUCHA reescritura. Creo que realmente hay dos soluciones posibles. Una es apagar cualquier escala de DPI por completo. Eso significaría que si el sistema Win7 de un usuario se configura en 120 ppp, entonces todo en su sistema se vería bien/grande, pero nuestra aplicación se vería correcta, pero sería pequeña en comparación con todo lo demás en otras aplicaciones. La segunda solución sería, de alguna forma, forzar a nuestra aplicación a usar la virtualización DPI, pero nunca usar escalas de dpi de estilo XP. Quiero que esto sea un cambio lateral de la aplicación y no confiar en que los usuarios finales tengan que realizar cambios en la configuración de Windows.
Hasta ahora no he encontrado una manera de lograr ninguna solución.
¿Puede alguien más conocedor de este tema responder y señalarme de la manera correcta?
Gracias
¿El problema está en su código de diseño o en su código de dibujo? Por ejemplo, ¿está el problema de que está creando botones y otros controles estándar x por y píxeles, o el problema es que tiene un código que dibuja sus propios controles (por ejemplo, usando llamadas GDI) que tiene tamaños fijos? ¿Cómo estás haciendo tu diseño? ¿Formas? ¿Plantillas de diálogo? ¿Código personalizado? –
No hay magia aquí, solo tendrá que agrandar sus ventanas. O sus fuentes más pequeñas, elija su veneno. –