Come ottenere la dimensione del carattere da CMFCPropertyFontProperty
-
18-09-2019 - |
Domanda
Sto usando questo blocco di codice per ottenere il nome del carattere, stile e dimensione selezionato dall'utente dalla finestra di dialogo tipo di carattere del controllo CMFCPropertyFontProperty. Sono già in grado di ottenere il nome e lo stile, ma la dimensione sembra restituire un valore diverso.
** * CMFCPropertyGridProperty pCurSel = m_wndPropList.GetCurSel (); CMFCPropertyGridFontProperty * pFontProp = dynamic_cast (pCurSel);
if (pFontProp) {
LPLOGFONT font_info = pFontProp-> GetLogFont ();
INT nSize = 0;
nSize = font_info-> lfHeight;
// nSize sembra restituire un valore negativo ...: (
} **
Mi rendo conto che c'è una formula per esso: lfHeight = -MulDiv (Pointsize, GetDeviceCaps (hDC, LOGPIXELSY), 72);
Ma io non riesco a farlo funzionare ... come faccio ad ottenere HDC da CMFCPropertyFontProperty? per favore aiutatemi ...
Soluzione
Si può semplicemente utilizzare GetDC (NULL); per ottenere un HDC per lo schermo che presumo sarà lo stesso di quello che utilizzerà la finestra di dialogo di carattere.
La documentazione LOGFONT descrive il significato di + ve e -ve valori per il membro lfHeight,
http://msdn.microsoft.com/ it-it / library / dd145037 (VS.85) aspx