Mi sono imbattuto in un comportamento imbarazzante di CEdit quando si imposta il carattere: per una certa dimensione del carattere, lettere come 'g' o 'j' mancano della parte inferiore, indipendentemente dall'altezza rect di CEdit. Ecco due esempi:Comando di modifica MFC comportamento strano
CFont *ctrlFont = new CFont();
ctrlFont ->CreatePointFont(80, "Arial Black");
CEdit m_editName;
m_editName.SetFont(ctrlFont);
con questo risultato:
ma per
ctrlFont ->CreatePointFont(100, "Arial Black");
tutto va bene
Come si può osservare, l'altezza rect del CEdit è più grande dell'altezza del testo in entrambi i casi. Il controllo genitore è un CDialog; il font è impostato su ::OnInitDialog
e la dimensione CEdit è impostata con il metodo SetWindowPos
su ::OnShowWindow
. Cosa potrebbe causare questo, e come dovrei gestirlo?
Edit: ho provato il suggerimento di @rrirower, e ora sono confuso; l'aggiunta del CDC
CEdit per l'inizializzazione del CFont cambiato un sacco maschera del testo (non si può vedere dalla beggining, ma ho altri di modifica del con il vecchio tipo di carattere sulla stessa pagina e c'è una grande differenza):
ctrlFont1->CreatePointFont(80, "Arial Black", m_editName.GetDC());
hai provato specificando un DC sulla chiamata CreatePointFont? Non sono sicuro che farà la differenza, ma vale la pena provare. – rrirower
@rrirower, ho provato il tuo suggerimento, ma i risultati sono in qualche modo strani: il testo non assomiglia all'ultima volta. aggiornerò la mia domanda con questo risultato. – MRM
@rrirower che implica il controllo di modifica DC ha caratteristiche diverse rispetto al desktop DC. Come potrebbe essere? –