一个很长的文本字符串,在view中输出,如何实现换行??
字符串包含汉字和字母等,可能造成汉字的截断,用drawtext会出现一些奇怪的问题(比如说有几个字重叠,出现乱码等),还有,我希望输出一行文本隔一行再输出文本,请问怎么实现。用插入\r\n的方式也行不通,首先可能截断汉字,而且显示出来是两个方框。。

解决方案 »

  1.   

    加上DT_EDITCONTROL表记后用\n就可以实现换行显示,加汉字也没问题。
      

  2.   

    to:westar(星爷(一周内结贴)) 
        什么意思?to:mvmouse(mouse)
        你说的是在edit中吧to:eatingfish(高侃绪)
        用textout好象更不好实现吧to:ripyu(抢分的恶狼)
        我不是指在edit中换行
      

  3.   

    CString strTemp="this is a teste stest setset set et setest ";
    CRect rect(0,0,112,88);
    pDC->DrawText(strTemp,rect,DT_EDITCONTROL);
    可以自动换行的
      

  4.   

    to : yes_start(刚刚开始)    可是drawtext会有一些乱码显示,而且我希望空一行,draw一行,请问如何实现?
      

  5.   


    用 DrawText() 没有什么问题啊。
    加上 DT_WORDBREAK 就不会截断汉字
      

  6.   

    还是自己断句吧,下面是我随便写的一段代码,希望对你有用.
    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);
    }