0

我正在使用此代码块从 CMFCPropertyFontProperty 控件的字体对话框中获取用户选择的字体名称、样式和大小。我已经能够获得名称和样式,但大小似乎返回了不同的值。

CMFCPropertyGridProperty* pCurSel = m_wndPropList.GetCurSel();
CMFCPropertyGridFontProperty* pFontProp = dynamic_cast<CMFCPropertyGridFontProperty*>(pCurSel);

if (pFontProp) {
  LPLOGFONT font_info = pFontProp->GetLogFont();
  INT nSize = 0;
  nSize = font_info->lfHeight;
  //nSize seems to return a negative value... :(
}

我意识到有一个公式:

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

但我似乎无法让它工作......我如何从 CMFCPropertyFontProperty 获得 hDC?请帮忙...

4

1 回答 1

0

您可以只使用 GetDC(NULL); 为屏幕获取 HDC,我认为它与字体对话框将使用的相同。

LOGFONT 文档描述了 lfHeight 成员的 +ve 和 -ve 值的含义,

http://msdn.microsoft.com/en-us/library/dd145037(VS.85).aspx

于 2009-10-05T14:18:23.643 回答