任务:
      从一个文本文件中取出某些数据,生成一个新的文本文件。
      从原文件中取出数据,生成新文件的代码已经完成。
   我作的对话框为:
     |---------------------------------------------------------|
     |                                                         |
     | 原文件名:IDC_EDIT1                                      |      
     |                                                         |
     | 新文件名:IDC_EDIT2                                             
     |                                                         |
     |                  生成新文件按钮           取消按钮        |   
     |---------------------------------------------------------|
     |  IDC-EDIT3                                              |
     |                                                         |
     |---------------------------------------------------------|
    其中:IDC-EDIT1对应的变量为:yuanfilename
          IDC-EDIT2对应的变量为:newfilename
          IDC-EDIT3对应的变量为:newfile
    问题:
       如何从控件IDC-EDIT1中取得文件名,并打开此文件(要考虑文件的存放路径),如何从控件IDC-EDIT2取得文件名,并打开此文件(要考虑文件的存放路径),
还有,要将新生成的文件内容显示在IDC-EDIT3中。
    SOS!SO !S!...急!急!急!

解决方案 »

  1.   

    用classwizard生成“生成新文件按钮”的click响应函数,这个按钮最好不要是IDOK,如果是IDOK,则在里面不要调用CDialog::OnOK。在上面生成的响应函数做这样的处理:
    UpdateData(TRUE);
    然后,yuanfilename就等于IDC-EDIT1内容,IDC-EDIT2内容是newfilename,用这两个变量调用你的代码,如果成功返回,则打开newfilename文件,把内容读取到newfile中。然后
    UpdateData(FALSE);
    就显示在IDC_EDIT3上。
      

  2.   

    还有路径问题,比如:原文件在c:\zhong\yfilename
                       新文件写在c:\zhong1\newfilename
    要写出详细代码,高分才能到手!请给予帮助!急!急!急!
      

  3.   

    仔细学习UpdateData()函数、CFile的打开方式,读写。建议学习一下文件对话框CFileDialog类。自己做吧。不然源代码能看懂吗?
      

  4.   

    在编辑框右侧加个browse按钮。生成函数。
    UpdateData();
    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK)
    {
      yuanfilename=dlg.GetPathName();//或者newfilename
    }
    UpdateData(FALSE);
      

  5.   

    要将新生成的文件内容显示在IDC-EDIT3中,怎么做?
      

  6.   

    回复人: realdreamer(1,2,3,跑~~ 哈,你咋那么慢啊) (  ) 信誉:100  2002-10-13 21:23:00  得分:0  
     
     
      真难题啊~~~~~~~~~
      
     
    ----------以上是引用--------------------
    吓得我以为我看错题了...这些对MFC稍微有点了解就应该是很容易的呀...
      

  7.   

    CFileDialgo dlgFile1(TRUE);  //还可以修改初始文件名,扩展名等东西
    //看看MSDN比较好,保存的时候置为FALSE
    if(dlgFile1.DoModal()==IDOK) //选择了文件
    {
       dlgFile1.GetPathName();  //取文件名
       ....
    }
    else
     ... //没有选择文件
      

  8.   

    晕倒楼上写真难题也吓我一跳,害我也重新读了一遍问题。你的问题根本不是问题啊。会UpdateData();就行了。上面有例子我就不写了。你最后的问题要将新生成的文件内容显示在IDC-EDIT3中,怎么做?UpdateData(); // 让你的edit1和edit2的内容update到变量。default is TRUEnewfile.Empty();
    newfile=yuanfilename+newfilename;UpdateData(FALSE);// 让新的变量update到edit control上。
    /*
      tony
    //*/
      

  9.   

    晕倒楼上写真难题也吓我一跳,害我也重新读了一遍问题。你的问题根本不是问题啊。不过这类问题我最爱回答了,不用过脑子啊。呵呵。just kidding :P建议你学学基本东西。会UpdateData();就行了。上面有例子我就不写了。你最后的问题要将新生成的文件内容显示在IDC-EDIT3中,怎么做?UpdateData(); // 让你的edit1和edit2的内容update到变量。default is TRUEnewfile.Empty();
    newfile=yuanfilename+newfilename;UpdateData(FALSE);// 让新的变量update到edit control上。
    /*
      tony
    //*/
      

  10.   

    晕倒楼上写真难题也吓我一跳,害我也重新读了一遍问题。你的问题根本不是问题啊。不过这类问题我最爱回答了,不用过脑子啊。呵呵。just kidding :P建议你学学基本东西。会UpdateData();就行了。上面有例子我就不写了。你最后的问题要将新生成的文件内容显示在IDC-EDIT3中,怎么做?UpdateData(); // 让你的edit1和edit2的内容update到变量。default is TRUEnewfile.Empty();
    newfile=yuanfilename+newfilename;UpdateData(FALSE);// 让新的变量update到edit control上。
    /*
      tony
    //*/
      

  11.   

    tony_w2000(gogo) 你的方法是把新文件的文件名显示在IDC-EDIT4中,而不是文件的内容
      

  12.   

    晕死早说啊。多亏我来看到了。
    try
    {
    CStdioFile f;
    f.Open(_T("test.txt"),CFile::modeReadWrite);

    CString strBuff; // CString buffer of File line while(f.ReadString(strBuff))
    {
                           yuanfilename+=strBuff;
                       }
                       f.Close();
    }
    catch(CFileException* e)
    {
    TCHAR szErr[1024];
    e->GetErrorMessage(szErr, 1024);
    AfxMessageBox(szErr);
    e->Delete();
    }这是读出原文件的内容放到yuanfilename里面。以此类推读new file的内容。之后按照我上面的方法就行了。