txt文档中的换行到edit box 中不会被识别,而是继续在同一行显示下去,直到写不下才换行,这样的话和txt的显示就有差异。
已经将edit box的properties设置为Multiline 和 Vertical scroll;以下是相关部分的代码:
void CLexicalDlg::open() 
{
// TODO: Add your control notification handler code here
char ch[1000];
int i=0,j=0;
ifstream infile;
CFileDialog * filedialog;
CEdit * edt=(CEdit *)GetDlgItem(IDC_EDIT1);
filedialog = new CFileDialog(true,"bak");
CString str;
if (filedialog->DoModal()==IDOK ){ //显示打开对话框
    
str = filedialog->GetFileName(); //读取用户选择的文件
infile.open (str);
if (!infile){
MessageBox("文件打开错误","错误");
}
}
while(infile.get(ch[i]))
i++;
for(j=i;j<1000;j++)
ch[j]=NULL;


str=ch;
edt->SetWindowText(str);
}

解决方案 »

  1.   

    那你就用CStdioFile一行的读,然后自己加上_T("\r\n"),累加得到所有的内容;最后一次性写入EDIT中
      

  2.   


    对,用ReadString读一行,再加上换行
      

  3.   

    注意把 \n 换成 \r\n
    读取文本文件的时候,读到回车是一个 '\n', 但是 EditBox 需要 \r\n 才换行
      

  4.   

    判断一下, 把换行符改成"\r\n" 即可, 如下void CLexicalDlg::open() 
    {
        // TODO: Add your control notification handler code here
        char ch[1000];
        int i=0,j=0;
        ifstream infile;
        CFileDialog * filedialog;
        CEdit * edt=(CEdit *)GetDlgItem(IDC_EDIT1);
        filedialog = new CFileDialog(true,"bak");
        CString str;
        if (filedialog->DoModal()==IDOK ){            //显示打开对话框
                    
            str = filedialog->GetFileName();        //读取用户选择的文件        
            infile.open (str);
            if (!infile){
                MessageBox("文件打开错误","错误");
            }
        }
        while(infile.get(ch[i]))
             {
    if(ch[i]=='\n')
    {
    ch[i]='\r';
    ch[++i]='\n';
    i++;
    continue;
    }

            i++;
    }
        for(j=i;j<1000;j++)
            ch[j]=NULL;
        
        
        str=ch;
        edt->SetWindowText(str);
    }