DrawText绘制多行文本为何失败?
在BCB5中的按钮Click事件中写了如下代码,但文本只能输出一行而不是多行 why?
AnsiString st;
RECT Re;
Re.left =110;
Re.top =210;
Re.right =310;
Re.bottom =400;
st ="cphenafdsadsflkjdlvfdfdfdsafdlkjfdkjfdlfd";
// SetTextAlign(Canvas->Handle,TA_LEFT);
Format =DT_EDITCONTROL||DT_WORDBREAK||DT_LEFT;
::DrawText(Canvas->Handle, st.c_str(),st.Length(), &Re, DT_EDITCONTROL||DT_WORDBREAK||DT_LEFT);
问题点数:0、回复次数:4Top
1 楼shclhs(hello)回复于 2003-02-04 23:32:42 得分 0
我知道的DrawText好象只能是一行文本吧。Top
2 楼iYoung()回复于 2003-02-06 01:17:36 得分 0
try DT_WORDBREAK | DT_LEFTTop
3 楼huzhangyou(信仰(http://www.libing.net.cn))回复于 2003-02-06 10:51:17 得分 0
当然可以画多行文本
可以侃侃参数的说明如下
DT_BOTTOM 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边
DT_CALCRECT 象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值
DT_CENTER 文本垂直居中
DT_EXPANDTABS 描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定
DT_EXTERNALLEADING 计算文本行高度的时候,使用当前字体的外部间距属性(the external leading attribute)
DT_LEFT 文本左对齐
DT_NOCLIP 描绘文字时不剪切到指定的矩形
DT_NOPREFIX 通常,函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为
DT_RIGHT 文本右对齐
DT_SINGLELINE 只画单行
DT_TABSTOP 指定新的制表站间距,采用这个整数的高8位
DT_TOP 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部
DT_VCENTER 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部
DT_WORDBREAK 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效
Top
4 楼ouygg(痞子酷)回复于 2003-02-10 10:31:10 得分 0
AnsiString st;
RECT Re;
Re.left =10;
Re.top =10;
Re.right =300;
Re.bottom =400;
st ="aaaaaa\r\nbbbbbbbbb\r\nccccccc";
// SetTextAlign(Canvas->Handle,TA_CENTER);
::DrawText(Canvas->Handle, st.c_str(),st.Length(), &Re, DT_WORDBREAK);
Top




