如何实现整词换行? 顶者有分

liul17 2007-08-02 02:07:07
我通过GDI+实现了一个文本显示的东西,因为有一些特殊需求所以必须自己写,但不能整词的换行,整词换行就是像Word一样,当一行显示不下时,遇到是一个字时直接换行,当遇一个词时,将整个词换到下一行.
请问该怎么实现?

我知道词的规则,我也试过自己控制换行(计算 x,y值一个词一个词的打印,判断窗体的width,当超过宽度时换行,但运行效率太低)
求高效些的方法!!

大家帮忙想想办法!!
...全文
251 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianhei 2007-11-21
  • 打赏
  • 举报
回复
CDC::DrawText
是整字换行吧
Allen_zhang 2007-11-21
  • 打赏
  • 举报
回复
你用什么来显示文字的?
CDC::DrawText 这个就可以整词换行
wangzai117 2007-11-20
  • 打赏
  • 举报
回复
UP
pptor 2007-11-20
  • 打赏
  • 举报
回复
up
ka_ng 2007-11-20
  • 打赏
  • 举报
回复
我也遇到了此类问题,而且是多语言。如果是多语言呢?用户可能随时切换为日文、中文、泰文、韩文、法文等,这时?????
yangsen2016 2007-08-09
  • 打赏
  • 举报
回复
up
向立天 2007-08-08
  • 打赏
  • 举报
回复
我给你的函数不好用么?
我做过一个带居中折行功能的静态控件,
测试的时候在编辑框里输入文字,
在静态控件中可同步显示,
用的就是这个函数。
liul17 2007-08-08
  • 打赏
  • 举报
回复
对 windows中有很多控件都可以自动折行,尤其是word中对词的折行是最好的 而且速度也很好 大家一起讨论讨论 看如何能够实现!!!
flypig917 2007-08-08
  • 打赏
  • 举报
回复
那你就得使用中科院计分词的方法这是网址:
www.nlp.org.cn;mtgroup.ict.ac.cn
这个分词主要在CResult类的FileProcessing函数里进行的,你要是还是不太明白可以写信给我,我的邮箱是lujing18@yahoo.com.cn。
lmnihf2001 2007-08-02
  • 打赏
  • 举报
回复
当单个单词大于窗口宽度的时候还要截断这个单词
lmnihf2001 2007-08-02
  • 打赏
  • 举报
回复
也做过类似的 不过还有图片 换起行来真麻烦 最后算法不好导致速度太慢 只要知道CEdit内部怎么做的就好办了
pueler 2007-08-02
  • 打赏
  • 举报
回复
up
向立天 2007-08-02
  • 打赏
  • 举报
回复
BOOL CGPStaticEx::IsASingleWord(const CString & csText)
{
char cEnd = 0;

cEnd = csText.GetAt(csText.GetLength() - 1);
if ( ( csText.Find(" ") == -1 ) || (cEnd == ' ') )
return TRUE;
else
return FALSE;
}
有这个函数检测没一行最后一个字符是否是完整此的结尾来判断是否该回行
i_love_pc 2007-08-02
  • 打赏
  • 举报
回复
英文还是中文?
RichEdit控件对英文好像自带有这个功能。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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