Abbiamo riscontrato un problema con una delle nostre applicazioni basate su Win32 MFC. Non viene visualizzato correttamente sui display che utilizzano impostazioni ad alta risoluzione. Più specificatamente in Windows XP con 120 dpi selezionati, ci sono diversi posti nell'app in cui il testo si riduce ma non i loro contenitori (il testo trabocca i limiti del suo pulsante, ecc.). Ciò si verifica anche in Windows 7 (e Vista) quando è selezionato> 96 dpi e viene selezionato "usa ridimensionamento dpi in stile XP". Se il ridimensionamento in stile xp non è selezionato, capisco che Win7 utilizza invece la virtualizzazione DPI. Tutto sembra a posto quando si utilizza la virtualizzazione DPI (Ok le cose sono sfocate ma almeno sono corrette). Di default in Win7 120 dpi usa il ridimensionamento in stile xp e l'impostazione successiva (144 dpi) no. Quindi la nostra app sembra corretta a 144 dpi ma sbagliata a 120 dpi.Applicazione Windows - Problemi DPI
Se modifico il manifest dell'applicazione per dichiarare l'app come "DPI aware", allora questo passaggio della virtualizzazione DPI (ma non il ridimensionamento in dpi style XP) e questo non mi consente di capire dove. Le cose sembrano ancora pessime (nessun cambiamento per 120 dpi, 144 dpi ora rotto).
Ho bisogno di risolvere questo problema e ho provato a leggere su DPI/problemi di ridimensionamento in generale ed è stata un'esperienza di apprendimento. Finora non ho trovato una soluzione adeguata. Al momento non ho intenzione di fare una correzione accurata e corretta (l'app ridimensiona correttamente tutti gli elementi in base al dpi). Ciò comporterebbe MOLTA riscrittura. Penso che ci siano davvero due soluzioni possibili. Uno è disattivare qualsiasi tipo di ridimensionamento DPI tutti insieme. Ciò significherebbe che se un sistema Win7 degli utenti fosse impostato su 120 dpi, tutto sul loro sistema sarebbe bello/grande, ma la nostra app apparirebbe corretta ma sarebbe piccola rispetto a qualsiasi altra applicazione. La seconda soluzione sarebbe quella di forzare la nostra app a utilizzare la virtualizzazione DPI, ma a non utilizzare mai il ridimensionamento in dpi style XP. Voglio che questo sia un cambio di lato dell'applicazione e non fare affidamento sugli utenti finali per dover apportare modifiche alla configurazione di Windows.
Finora non ho trovato un modo per realizzare nessuna delle due soluzioni.
Può qualcuno più esperto su questo argomento rispondere e indicarmi nel modo giusto?
Grazie
Il problema è nel codice di layout o nel codice di disegno? Ad esempio, il problema è che stai facendo pulsanti e altri controlli standard x per y pixel, oppure il problema è che hai un codice che disegna i tuoi controlli (ad esempio, utilizzando le chiamate GDI) con dimensioni fisse? Come stai facendo il tuo layout? Forme? Modelli di dialogo? Codice personalizzato? –
Qui non c'è magia, dovrai solo ingrandire le finestre. O i tuoi caratteri più piccoli, scegli il tuo veleno. –