程序运行时到底路径怎么回事?谁给就下面问题给我解释一下!问题:
  我在一个对话框的某个按钮关联函数中有这些代码:
  {....
  ///打开“打开”对话框///
  CFileDialog FileDlg(TRUE,"*.mdb",NULL,
                    OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
                    "数据库文件(*.mdb)|*.mdb|All Files(*.*)|*.*||");
  FileDlg.m_ofn.lpstrInitialDir="c:\\My Documents";
  if(FileDlg.DoModal()==IDOK)///点击“打开”对话框的“打开”按钮
     {  
        sTemp=FileDlg.GetPathName();///获取选取的路径和名字 
       ....
      }
  }
上面运行一切正常,然后关闭此对话框再打开另一个对话框
   其中要打开数据库,source是这样的
  source="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SpringLeaf.mdb"
其中SpringLeaf.mdb是存放在和程序同一个地方
  运行时显示数据库连接错误通过调试我发现是因为FileDlg.GetPathName();改变了路径所致,请问各位高手怎样才能让执行FileDlg.GetPathName();后不影响原先默认的路径?

解决方案 »

  1.   

    在CFileDialog之后,当前路径被改变了,你已经知道获得EXE文件路径,使用
    SetCurrentDirectory()改变当前路径即可
      

  2.   


    这样用SetCurrentDirectory()对不对呀,为什么不管用呀
    CString path;
    path="d:\\CSpringMagSys\\me.exe";
    SetCurrentDirectory((LPCTSTR)path);
      

  3.   

    试一下:
    CString path="d:\\CSpringMagSys";
    SetCurrentDirectory(path);
      

  4.   


    将你的数据库文件拷贝到执行文件目录下,调用下面的函数来改变当前路径
    void SetFilePath()
    {
    //获得EXE路径
    CString strpath=AfxGetApp()->m_pszHelpFilePath;
    CString strExename=AfxGetApp()->m_pszExeName;
    strpath.Insert(strpath.GetLength()-strExename.GetLength()-4,'\0');
             SetCurrentDirectory(strpath);
    }
      

  5.   

    wyljery(城市猎人) :
    为什么你的第一种方法不行,但第二中就行呀!
    不都是先在strpath变量中保存路径,然后再SetCurrentDirectory(strpath);
      

  6.   

    你把strpath打印出来,看看和d:\\CSpringMagSys\\有什么区别