如何在单文档里把文本文件里的内容按每行26个汉字的形式输出。谢了。

解决方案 »

  1.   

    把代码贴出来看看,View是不是用的CEditView?
    判断到一行满52个字符是插入一个"\r\n"就能换行了。
      

  2.   

    是不是用OnDraw输出了,先计算出每个字的高度,然后就每次读26个字,再自己换行。
      

  3.   

    我用OnDraw输出了,再就是文本文件里面的回车换行怎么辨别。如何计算给定文本文件里字的高度以及字符间距呢。const int bufflen=52;
    CFile file;
    int i=1;
    char buff[bufflen];
             memset(buff,0,bufflen);
    file.Open("text.txt",CFile::modeRead);
    int length=file.GetLength();
    while (52*i<length)
    {
    file.Read(buff,bufflen);
    file.Seek(52*i,CFile::begin);
    strcat(buff,"\r\n");
    pDC->TextOut(0,0,buff);
    i++;
    }
    file.Read(buff,bufflen*i-length);
             strcat(buff,"\r\n");
    pDC->TextOut(0,0,buff);
    file.Close();
    各位老大帮帮忙啊。
      

  4.   

    每個循環後把TextOut的第二個參數加一個數不就行了
      

  5.   

    你的程序怎麽那麽亂
    char ch[3];//處理漢字
    int iX=0,iY=0;
    while(file.Read(ch,1)!=0)
    {
    ch[1]=0;ch[2]=0;
    if(ch[0]<0)
    {
    if(file.Read(&ch[1],1)!=0)
    {
    pDC->TextOut(i,j,ch);
    i+=40;
    }else
    {
    break;
    }else//if(ch[0]<0)
    {
    pDC->TextOut(i,j,ch);
    i+=20;
    }
    if(i>200)//一行距離
    {
    i=0;
    j+=40;
    }
    }}
      

  6.   

    重新搞一下,不知道有沒有錯誤了char ch[3];//處理漢字
    int i=0,i=0;
    while(file.Read(ch,1)!=0)
    {
       ch[1]=0;ch[2]=0;
       if(ch[0]<0)
       {
           if(file.Read(&ch[1],1)!=0)
            {
               pDC->TextOut(i,j,ch);
               i+=40;
            }else
            {       
                break;
            }
       }else//if(ch[0]<0)
       {
           pDC->TextOut(i,j,ch);
           i+=20;
        }
        if(i>200)//一行距離
        {
            i=0;
            j+=40;
        }
    }
      

  7.   

    我只是給你做一個例子,你看懂了的話就好,我在給你加一下回車換行char ch[3];//處理漢字
    int i=0,i=0;
    while(file.Read(ch,1)!=0)
    {
       ch[1]=0;ch[2]=0;
       if(ch[0]<0||ch[0]==0x0d||ch[0]==0a0a)
       {
           if(file.Read(&ch[1],1)!=0)
            {
              //兩個回車換行符
              if((ch[0]==0x0d&&ch[1]==0x0a)||(ch[0]==0x0a&&ch[1]==0x0d))
              {
                 i=0;j+=40;
              }else if((ch[0]==0x0d||ch[0]==0x0a)&&ch[1]!=0x0d&&ch[1]!=0x0a)//一個
              {
                 i=0;j+=40;
                 file.Seek(-1,CFile::當前位置);
              }else
              {
               pDC->TextOut(i,j,ch);
               i+=40;
              }
            }else
            {       
                break;
            }
       }else//if(ch[0]<0)
       {
           pDC->TextOut(i,j,ch);
           i+=20;
        }
        if(i>200)//一行距離
        {
            i=0;
            j+=40;
        }
    }
      

  8.   

    pDC->TextOut(0,0,buff);
    所有TextOut都相同坐标
    试试pDC->TextOut(0,20*i,buff);
      

  9.   

    const int bufflen=52;
    CFile file;
    int i=1;
    char buff[bufflen];
    file.Open("text.txt",CFile::modeRead);
    int length=file.GetLength();
    while (52*i<length)
    {
    file.Read(buff,bufflen);
    file.Seek(52*i,CFile::begin);
    pDC->TextOut(0,20*i,buff);
    i++;
    }
    file.Read(buff,bufflen*i-length);
    pDC->TextOut(0,20*(i-1),buff);
    file.Close();
    最后一行怎么是乱码呢?
      

  10.   

    26个汉字,占52个字节,每次我Read 52个字节放入缓冲区中,然后再把它输出,此话有何不妥呀,请指教。
      

  11.   

    第一你的buff除非全是中文(没有数字、字母等),否则就可能产生问题
    第二最后一个TextOut和上一个TextOut输出到了一行