关于mfc中TextOut()的相关问题。 MFC中能改变TextOut输出的字体的大小吗

作者&投稿:蔡侦 (若有异议请与网页底部的电邮联系)
用TextOut想实现垂直输出,需要自己计算长度,一个字符一个字符的输出,还得要考虑汉字与英文的不同,可以写个函数来来实现,如下:
void CMyView::DrawTextVert(int x, int y, CString str, CDC*pDC)
{
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
long lHeigh = tm.tmHeight;
int nLine = 0;
for(int i=0; i<str.GetLength();i++)
{
if((BYTE)str[i] > 127)
{
pDC->TextOut(x, y+nLine*lHeigh, str.Mid(i,2));
nLine++;
i++;
}
else
{
pDC->TextOut(x, y+nLine*lHeigh, str.Mid(i,1));
nLine++;
}
}
}
在OnDraw中的测试代码为:
DrawTextVert(100,100,一个字符串,pDC);

一个一个输出嘛,不过建议你用DrawText()试试。

MFC TEXTOUT()输出的字符如何垂直居中显示?~

使用drawText函数吧
CRect rect;
CRect rectTmp;
GetClientRect( &rect );
rectTmp = rect;

//计算要显示的字符串高度
int height = dc.DrawText( m_szText, &rectTmp, DT_CALCRECT|DT_CENTER|DT_EDITCONTROL|DT_WORDBREAK );

//垂直、水平居中显示
rect.top += (rect.Height() - height)/2;
dc.DrawText( m_szText, &rect, DT_CENTER|DT_EDITCONTROL|DT_WORDBREAK );

当然可以,过程稍复杂,如下例子:
CDC *pDC;
//这里要将 pDC = 你要写字的那个窗口的DC
CFont newfont;//用来保存新字体
CFont *oldFont;//用来保存旧字体
newfont.CreateFontW(20,
11,
0,
0,
FW_NORMAL,
FALSE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS,
_T("宋体")
);//创建新字体
oldFont=pDC->SelectObject(&newfont);//选择新字体
pDC->SetTextColor(RGB(0,255,0));//设置字体颜色
pDC->TextOutW(10, 10, pDoc->text); //输出
pDC->SelectObject(oldFont);//选择回老字体
newfont.DeleteObject();//删除新字体

关于mfc中TextOut()的相关问题。
答:用TextOut想实现垂直输出,需要自己计算长度,一个字符一个字符的输出,还得要考虑汉字与英文的不同,可以写个函数来来实现,如下:void CMyView::DrawTextVert(int x, int y, CString str, CDC*pDC){ TEXTMETRIC tm;pDC->GetTextMetrics(&tm);long lHeigh = tm.tmHeight;int nLine = 0;for(...

MFC TEXTOUT()输出的字符如何垂直居中显示?
答://计算要显示的字符串高度 int height = dc.DrawText( m_szText, &rectTmp, DT_CALCRECT|DT_CENTER|DT_EDITCONTROL|DT_WORDBREAK );//垂直、水平居中显示 rect.top += (rect.Height() - height)/2;dc.DrawText( m_szText, &rect, DT_CENTER|DT_EDITCONTROL|DT_WORDBREAK );...

MFC中TextOut函数为什么不能再OnCreat窗口创建函数中输出字符
答:TextOut函数需要设备描述表句柄,在OnCreate函数中(窗口创建的消息中),设备描述表还没加载完成,所以TextOut还不能使用,你可以放到OnCreate的末尾试试看.。至于CreateSolidCaret()创建一个插入符,这个函数的使用不需要创建一个设备描述表句柄,所以在OnCreate的使用没有出错,CreateSolidCaret()创建一个...

MFC里 用pDC->TextOut 这个函数怎么实现未知数据输出?
答:1、用CString格式化字符串,例如 CString str;int varA = 100;str.Format("a=%d" , varA );这样str字符串存放的内容就是"a=100"这个字符串了 2、用TextOut输出

关于MFC中TextOut函数中参数的问题
答:加上L表示是宽字符,占2个字节,类型是wchar_t,你错是因为你传过去的字符串是char类型,类型不对 比如L'A':一个宽字符A,2字节 L"abcd":一个宽字符串abcd,10字节 MFC中字符串最好用_T宏括起来: pDC->TextOutW(30, 30, _T("lin"));

MFC如何读取一个txt文件中的内容,并用dc.TextOut()输出在显示屏上?
答:memset(buf, 0, nlen+1);file.Read(buf, nlen);file.Close();GetDC()->TextOut(0,0,buf);此段代码经测试无乱码。纠正一下你的代码:1.没有清零,导致字符串没有结束字符'\0';2.str=pBuf[i] 你这句只能得到其中的一个字符,应该用 str += pBuf[i] 吧;3.如果文件很大,就要考虑...

在MFC中用TextOut怎样将一个双精度数输出
答:fData;//假设为你要输出的数 char szData[32];sprintf( szData, "%f", fData );然后使用TextOut函数将szData输出就可以了。

mfc对话框中能否使用OnDraw等函数
答:可以的,要用绘制,还要注意在背景之后绘,否则会被遮住 代码:CDC *p=this->GetDC();CPen pen;p->SetBkMode(TRANSPARENT);p->TextOut(rect.left,rect.top,"需绘制的文字"); //输出文字 不一定要在OnDraw函数里绘制,随便什么函数都可以,但是要和背景绘制的顺序确定好,防止被遮住 ...

MFC中输出文本到屏幕的问题
答:如果是Dialog的话,用UpdateData(),函数更新即可。

MFC::怎么把整型变量用TextOut显示出来
答:BOOL TextOut(HDC hdc, // handle to DC int nXStart, // x-coordinate of starting position int nYStart, // y-coordinate of starting position LPCTSTR lpString, // character string int cbString // number of characters );从这里可以看出,里面要求的是一个字符串指针,你...