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 に答える