请问DrawText API函数能否使一个长单词在一个宽度不足以容纳此单词的矩形中折行,使得长单词显示完整?

zcs_1 2003-04-17 10:54:58
DrawText函数格式如下:
DrawText(Handle, //device context句柄
PChar(Word), //要显示的字符串
Length(Word), //字符串的长度
R, //矩形
DT_WORDBREAK //输出格式
);

如果Word字符串有20个字符,而R的宽度只有80个像素,则R的宽度不足以将Word在一行容纳,按照上面格式也无法折行,而是将Word不能显示的部分直接去掉了。DrawText有没有其他的格式让Word也折行显示,如果没有这样的格式,有没有其他的办法达到满足我的目的?
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcs_1 2003-04-22
  • 打赏
  • 举报
回复
问题解决,是自己写函数处理的。
由于ljyt和xue_fg没有正确回答问题,分数只能给jishiping,不过也感谢你们的捧场。
jishiping 2003-04-22
  • 打赏
  • 举报
回复
没有直接的函数可以做到,只有自己用代码实现。
zcs_1 2003-04-17
  • 打赏
  • 举报
回复
to ljyt(罗云) :DrawTextEx的用法我知道了,可是怎样才能将一个长的单词自动折行呢,用哪些格式,能给个例子吗,我就等着你的例子了,不然的话我还要自己编写一个处理字符串的函数。
ljyt 2003-04-17
  • 打赏
  • 举报
回复
DrawTextEx比DrawText多一个参数,是一个结构,自己看看吧……每个参数的意思也很简单。
typedef struct {
UINT cbSize;
int iTabLength;
int iLeftMargin;
int iRightMargin;
UINT uiLengthDrawn;
} DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS;
zcs_1 2003-04-17
  • 打赏
  • 举报
回复
to ljyt(罗云) :DrawTextEx该怎么用啊,能给个例子吗,我用着不行。

to xue_fg(砂的世界):你的代码是应该是以前编写的,将其中对我有用的一段Copy出来供我参考,能不能把你的思路说说,没有上下文,我理解不了你的代码。
xue_fg 2003-04-17
  • 打赏
  • 举报
回复
DrawStyle:=DT_EXPANDTABS or WordWraps[FWordWrap];

DoDrawText(CalcRect, GetText, DrawStyle or DT_CALCRECT);

procedure DoDrawText(var Rect: TRect; CText: String; Flags: Word);
begin
if (Flags and DT_CALCRECT <> 0) and ((CText = '') or ShowAccelChar and
(CText[1] = '&') and (CText[2] = #0)) then CText := CText + ' ';
if not ShowAccelChar then
Flags := Flags or DT_NOPREFIX;

Canvas.Font:=Font;
if not Enabled then
begin
OffsetRect(Rect, 1, 1);
Canvas.Font.Color:=clBtnHighlight;
DrawText(Canvas.Handle, PChar(CText), Length(CText), Rect, Flags);
OffsetRect(Rect, -1, -1);
Canvas.Font.Color:=clBtnShadow;
DrawText(Canvas.Handle, PChar(CText), Length(CText), Rect, Flags);
end
else
DrawText(Canvas.Handle, PChar(CText), Length(CText), Rect, Flags);
end;
ljyt 2003-04-17
  • 打赏
  • 举报
回复
用DrawTextEx吧,它能换行

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧