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 ...

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top