我用下面代码先输出一行字,然后想在其下面划一条线,但结果线却划在了那行字上:
CPaintDC dc(this);
dc.TextOut( 0, 0, "人民公社");
CFont *pFont;
pFont = GetFont();
LOGFONT lf;
pFont->GetLogFont( &lf );
dc.MoveTo( 0,abs( lf.lfHeight ) );
dc.LineTo( 100, abs( lf.lfHeight ) );
CPaintDC dc(this);
dc.TextOut( 0, 0, "人民公社");
CFont *pFont;
pFont = GetFont();
LOGFONT lf;
pFont->GetLogFont( &lf );
dc.MoveTo( 0,abs( lf.lfHeight ) );
dc.LineTo( 100, abs( lf.lfHeight ) );
CFont *font = GetFont();
CFont *pOldFont = (CFont*)dc.SelectObject(font);
dc.SetBkMode(TRANSPARENT);
dc.TextOut( 0, 0, "人民公社"); CSize size;
size = dc.GetTextExtent("人民公社");
dc.MoveTo( 0, size.cy );
dc.LineTo( size.cx, size.cy);
dc.SelectObject(pOldFont);
CDialog::OnPaint();
dc.GetTextMetric(&tm);将lf.lfHeight 改为: tm.tmHeight + tm.tmInternalLeading;