textout

时间:2024-07-06 20:58:55编辑:优化君

关于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);


C++ TextOutA函数无法显示内容。

#includeusing namespace std;class Array_max{public: void Max_value(int array[],int n);};int main(){ Array_max T; int a[10] = {12,12,39,-34,17,134,0,45,-91,76}; T.Max_value(a,10); return 0;}void Array_max::Max_value(int array[],int n) //::这个符号是错的,是英文状态下的{ int i,max; max = array[0]; for(i = 1;i < n;i++) { if(max < array[i]) max = array[i]; } cout<


如何控制Textout函数输出的文字的颜色和背景

1、可以调用dos控制台的命令system("color xx");改变文字颜色。
设置默认的控制台文字和背景颜色。
COLOR [attr]
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为文字。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时
的颜色
2、例程:


1
2
3
4
5
6
7

#include
#include


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 );


MFC中能改变TextOut输出的字体的大小吗

当然可以,过程稍复杂,如下例子:
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();//删除新字体


上一篇:度假村大亨

下一篇:网景软件站