我用CFileDialog自己选择了文件路径(比如选到桌面了),之后自动打开程序所在目录下的数据库,此时报错;
要怎样才能在用CFileDialog选择了路径后,使系统回到程序所在目录?

解决方案 »

  1.   

    记下之前的路径名  ,再调用SetCurrentDirectory函数
      

  2.   

    得到程序的目录 不就是用GetCurrentDirectory();
      

  3.   

    你用了相对路径吧
    设计程序目录的位置通过GetModuleFileName函数解析出来
    以下代码仅供参考
    CString GetAppPath()
    {
    CString strPath;
    TCHAR cCurrentFilePath[255];
    int nTemp; GetModuleFileName(NULL, cCurrentFilePath, 255); strPath = cCurrentFilePath;
    nTemp = strPath.ReverseFind('\\');
    strPath = strPath.Left(nTemp+1); return strPath;
    }
      

  4.   

    CFileDialog这个控件会修改默认路径的..所以你使用该控件后,GetCurrentDirectory()得到的路径是不相同的.以前被这个问题整得很惨.解决方法:在程序初始化的时候就保存当前路径..以后使用都调那个路径
      

  5.   


    此函数会把上次打开的路径当成当前路径, 所以最好用GetModuleFileName() 来代替 !
      

  6.   

    我试SetCurrentDirectory函数,可以将目录改回去,可是为什么打开数据库时还是出错呢?用CFileDialog改目录前打开数据库没问题,改完后我SetCurrentDirectory将当前目录改回去了,再用GetCurrentPath也能得到当前目录,就是打开数据库不行,这是为什么啊?
    附:我打开数据库的字符串为
    CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password= 1234; Data Source= RTUTypeInfo.mdb");