我建立了一个基于对话框的工程,打算逐行读取文本文件里的数据。我先在对话框里加入了一个按钮,编辑按钮的代码如下:    
      {  CString filepath;
         CFileDialog dlg(TRUE);
         dlg.DoModal();
         filepath=dlg.GetPathName( );  }
    接下来我想在另一个成员函数中调用上面获得的文件路径也就是"filepath",但是响应按钮的函数不能设置返回值,请问我应该如何做才能在同一工程下的其它函数中得到该文件名,也就是传递它给别的函数使用?
    第二个问题:我发现我获得的文件路径的格式为filepath="D:\xxx\xxx",而如果用ifstream file( )打开文本文件,括号里文件的路径格式应该是"D:\\xxx\\xxx",也就是说应该是双斜杠,请问这个问题怎样解决?
    谢谢各位的帮助!

解决方案 »

  1.   

    1.请问我应该如何做才能在同一工程下的其它函数中得到该文件名,也就是传递它给别的函数使用?这个的话,把CString filepath;设为成员变量,就是放到类里去定义.
    2.第二个问题:我发现我获得的文件路径的格式为filepath="D:\xxx\xxx",而如果用ifstream file( )打开文本文件,括号里文件的路径格式应该是"D:\\xxx\\xxx",也就是说应该是双斜杠,
    D:\\xxx\\xxx",  两个\是因为,\是转义字符,要在字符串中定义一个'\',必须在前面加一个'\',所以有两个。
      

  2.   

    接下来我想在另一个成员函数中调用上面获得的文件路径也就是"filepath",但是响应按钮的函数不能设置返回值,请问我应该如何做才能在同一工程下的其它函数中得到该文件名,也就是传递它给别的函数使用?
    ----------------
    成员变量,全局变量均可。
    第二个问题:我发现我获得的文件路径的格式为filepath="D:\xxx\xxx",而如果用ifstream file( )打开文本文件,括号里文件的路径格式应该是"D:\\xxx\\xxx",也就是说应该是双斜杠,请问这个问题怎样解决?
    ----------------------
    如果是GetPathName( );  返回的,赋值给一个CString 变量,直接用就是。
    如果是自己声明赋值的局部变量,如CString szFilePath="D:\\a.txt";这时就要双正斜杆.
    原因楼上的兄弟已经解释了。
      

  3.   

    首先谢谢两位,上面两个问题在你们的指导下已经解决!分数我会很快给你们加上
        想再提一个问题,我在原来的基于对话框的工程中又插入了一个新对话框,并为这个对话框建立了一个新类,现在想把刚才读取的filepath也传递到这个类中,请问应该如何做?
      

  4.   

    在新对话框类里定义m_filepath。
    然后主对话框调用新对话框的时候传进来:
    CNewDlg pDlg;
    pDlg.Create(新对话框ID,NULL);
    pDlg.m_filepath = this->filepath;
    pDlg.ShowWindow(SW_SHOW);