一个很长的文本字符串,在view中输出,如何实现换行??
字符串包含汉字和字母等,可能造成汉字的截断,用drawtext会出现一些奇怪的问题(比如说有几个字重叠,出现乱码等),还有,我希望输出一行文本隔一行再输出文本,请问怎么实现。用插入\r\n的方式也行不通,首先可能截断汉字,而且显示出来是两个方框。。
字符串包含汉字和字母等,可能造成汉字的截断,用drawtext会出现一些奇怪的问题(比如说有几个字重叠,出现乱码等),还有,我希望输出一行文本隔一行再输出文本,请问怎么实现。用插入\r\n的方式也行不通,首先可能截断汉字,而且显示出来是两个方框。。
什么意思?to:mvmouse(mouse)
你说的是在edit中吧to:eatingfish(高侃绪)
用textout好象更不好实现吧to:ripyu(抢分的恶狼)
我不是指在edit中换行
CRect rect(0,0,112,88);
pDC->DrawText(strTemp,rect,DT_EDITCONTROL);
可以自动换行的
用 DrawText() 没有什么问题啊。
加上 DT_WORDBREAK 就不会截断汉字
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);
}