自动换行的实现方法?(200分)

  • 主题发起人 主题发起人 谭俊峰
  • 开始时间 开始时间

谭俊峰

Unregistered / Unconfirmed
GUEST, unregistred user!
var<br>&nbsp; &nbsp;Size: Byte;<br>&nbsp; &nbsp;TmpRect:TRect;<br>&nbsp; &nbsp;Flags : Word;<br>&nbsp; &nbsp;S:String;<br>begin<br>&nbsp; &nbsp; &nbsp;TmpRect.Left:=60;TmpRect.Top:=60;tmpRect.Right:=160;tmpRect.Bottom:=260;<br>&nbsp; &nbsp; &nbsp;Canvas.FillRect(TmpRect);<br>&nbsp; &nbsp; &nbsp;Flags := DT_NOCLIP or DT_VCENTER or DT_WORDBREAK; //?<br>&nbsp; &nbsp; &nbsp;S:='DDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF';<br>&nbsp; &nbsp; &nbsp;DrawText(Canvas.Handle, Pchar(S), Length(S), TmpRect, Flags);<br>//虽然设置了“DT_WORDBREAK”,但并没有自动换行,应该如何做?<br><br><br>
 
这是你的S它认为是一个单词啊,要么用中文字符,要么英文字符用空格分开吧
 
可是TMemo里为何可以实现?
 
自己加回车换行符。<br>
 
1. 你的DT_VCENTER无效, DT_VCENTER只能和DT_SINGLELINE合用才能产生效果<br>2. 你的s本身只是一个单词, 无法wordbreak<br>3. TMemo中处理文本的部分是windows的Edit control, 它用的不是TextOut进行文本<br>格式化的.
 
加回车符(如#13)
 
《meta http-equiv="content-type" content="text/html;charset=gb2312"》<br>注:使用时,须选择Encoding为Simplified Chinese
 
加入回车换行: #13#10<br>
 
加回车符.
 
agree with beta
 
多人接受答案了。
 
后退
顶部