我使用字体对话框,GetLogFont(&logfont),logfont.lfHeight为负,如何转化为毫米?!

解决方案 »

  1.   

    http://www.sdlgame.com/reference/Programming%20Windows/17.htm逻辑字体结构
      

  2.   

    CSize SizeExt;
    strCommand = "¿ËÀ­ÂêÒÀÊÐÍÁµØÐÅϢϵͳ"; dc.SetMapMode(MM_TEXT); // +y = down
    SizeExt = dc.GetWindowExt();
    dc.SetWindowExt(500,550);
    dc.SetViewportExt(rect.right, rect.bottom);
    dc.SetViewportOrg(0, 0);// LOGFONT logfont;
    CFont m_biggerFont;
    // memset(&logfont, 0, sizeof(logfont));
    // logfont.lfHeight = 40;
    // logfont.lfWeight = FW_BOLD;
    // CString szFont;
    // szFont.LoadString(IDS_FONT_NAME);           // TrueType font
    // lstrcpy(logfont.lfFaceName, strCommand);
    // VERIFY(m_biggerFont.CreateFontIndirect(&logfont));
    // SetFont(&m_biggerFont);
    // InputEdit().SetFont(&m_biggerFont);
    m_biggerFont.CreateFont(0.13630*rect.Height(), 0, 0, 0, 900, FALSE, FALSE, 0,
                         DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                         CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                         DEFAULT_PITCH | FF_SWISS, "Arial"); // not TrueType
    // dc.SelectObject(&m_biggerFont);
    CFont* pOldFont = dc.SelectObject(&m_biggerFont);
    TEXTMETRIC tm;
    char       szFaceName[100]; dc.GetTextMetrics(&tm);
    dc.GetTextFace(99, szFaceName);
    TRACE("font = %s, tmHeight = %d, tmInternalLeading = %d,"
      " tmExternalLeading = %d\n", szFaceName, tm.tmHeight,
    tm.tmInternalLeading, tm.tmExternalLeading);
    // TraceMetrics(dc(this));

    // dc.SetTextAlign(TA_BASELINE | TA_CENTER);
    dc.SetTextColor(RGB(255, 0, 0));
    dc.SetBkMode(TRANSPARENT);
    dc.TextOut(rect.left+rect.Width()*0.015, rect.top+rect.Height()*0.40981067, strCommand);
    TextRect = rect;
    TextRect.left = rect.left+rect.Width()/2-80;
    TextRect.top = rect.top+rect.Height()/2-20;
    TextRect.right = TextRect.left+260;
    TextRect.bottom = TextRect.top + 80;
    // dc.DrawText(strCommand, TextRect,
    // DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    dc.SelectObject(pOldFont);