急!!在视图中实现换行问题!!解决问题马上给分。。。

xiaohyy 2003-03-07 04:21:44
一个很长的文本字符串,在view中输出,如何实现换行??
字符串包含汉字和字母等,可能造成汉字的截断,用drawtext会出现一些奇怪的问题(比如说有几个字重叠,出现乱码等),还有,我希望输出一行文本隔一行再输出文本,请问怎么实现。。。。

用插入\r\n的方式也行不通,首先可能截断汉字,而且显示出来是两个方框。。
...全文
90 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohyy 2003-03-09
  • 打赏
  • 举报
回复
看来还是只有用drawtext
wuxq 2003-03-08
  • 打赏
  • 举报
回复
还是自己断句吧,下面是我随便写的一段代码,希望对你有用.
int x = 0;
int xword = 0;
int y = 0;
int n = strlen(pszBuf);
char p[LINES + 1];
int i = 0;
int j = 0;
while (i < n && y < COLS)
{
if (BYTE(pszBuf[i]) >= 0x80)
{
if (x < LINES - 1)
{
p[j++] = pszBuf[i++];
p[j++] = pszBuf[i++];
x += 2;
}
else
{
p[j] = 0;
Display_String(xword, y, p);
j = 0;
xword = x = 0;
y++;
}
}
else
{
if (pszBuf[i] == '\n')
{
p[j] = 0;
Display_String(xword, y, p);
j = 0;
i++;
xword = x = 0;
y++;
}
else if (pszBuf[i] == ' ')
{
p[j] = 0;
Display_String(xword, y, p);
xword += j + 1;
j = 0;
i++;
x = xword;
}
else
{
p[j++] = pszBuf[i++];
x++;
}
if (x >= LINES)
{
if (pszBuf[i] == ' ' || pszBuf[i] == '\n' || xword == 0)
{
p[j] = 0;
Display_String(xword, y, p);
j = 0;
if (xword > 0)
{
i++;
}
}
xword = x = 0;
y++;
}
}
}
if (j > 0 && y < COLS)
{
p[j] = 0;
Display_String(xword, y, p);
}
hanwg 2003-03-08
  • 打赏
  • 举报
回复
同意 shadowac(走向黑暗)
yes_start 2003-03-08
  • 打赏
  • 举报
回复
你可以试一下上面的办法
shadowac 2003-03-07
  • 打赏
  • 举报
回复

用 DrawText() 没有什么问题啊。
加上 DT_WORDBREAK 就不会截断汉字
xiaohyy 2003-03-07
  • 打赏
  • 举报
回复
to : yes_start(刚刚开始)

可是drawtext会有一些乱码显示,而且我希望空一行,draw一行,请问如何实现?
stoneyrh 2003-03-07
  • 打赏
  • 举报
回复
首先算一下,一行会有多少个字符,再把这个长字符串分解成一个个的
再逐一输出
分解时注意一下中文字符的分解

yes_start 2003-03-07
  • 打赏
  • 举报
回复
CString strTemp="this is a teste stest setset set et setest ";
CRect rect(0,0,112,88);
pDC->DrawText(strTemp,rect,DT_EDITCONTROL);
可以自动换行的
yes_start 2003-03-07
  • 打赏
  • 举报
回复
应该上面可以了
xiaohyy 2003-03-07
  • 打赏
  • 举报
回复
to:westar(星爷(一周内结贴))
什么意思?

to:mvmouse(mouse)
你说的是在edit中吧。。。

to:eatingfish(高侃绪)
用textout好象更不好实现吧

to:ripyu(抢分的恶狼)
我不是指在edit中换行
ripyu 2003-03-07
  • 打赏
  • 举报
回复
DT_EDITCONTROL表记后用\n
eatingfish 2003-03-07
  • 打赏
  • 举报
回复
不要用DrawText,用TextOut
westar 2003-03-07
  • 打赏
  • 举报
回复
你没有选中文库?
mvmouse 2003-03-07
  • 打赏
  • 举报
回复
加上DT_EDITCONTROL表记后用\n就可以实现换行显示,加汉字也没问题。
koyoele 2003-03-07
  • 打赏
  • 举报
回复
用EditView

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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