环境:可执行程序和config.ini文件放在同一目录下
现在我要做以下操作:
1 用CFileDialog类,让用户选择打开一文件,保存用户设置。
2 程序打开config.ini文件,记录用户打开的文件名及路径,以供下次系统启动时打开用户设置文件初始化用户设置。现在我碰到了麻烦:用户选择路径后,程序将此路径作为当前路径,然后在此路径中寻找config.ini文件。怎么
才能回到可执行程序的目录下,读写config.ini文件呢?

解决方案 »

  1.   

    在用CFileDialog类,让用户选择打开一文件前保存路径
    完了以后设置当前路径为刚才保存的路径即可
      

  2.   

    用GetModuleFileName()函数:TCHAR tchFullPath[MAX_PATH];
    GetModuleFileName(NULL, tchFullPath, MAX_PATH);CString strFullPath = CString(tchFullPath);
    CString strOnlyPath = strFullPath.Mid
              (0, strFullPath.ReverseFind( '\\'));CString strConfigPath = strOnlyPath + "\\config.ini";
      

  3.   

    假设你的INI文件的路径是strPath,每次使用过了CFileDialog后,使用SetCurrentDirectory(strPath)将当前路径设定回去就可以了
      

  4.   

    如果你的ini放在winnt等系统目录下,则strPath可以通过GetWindowDirectory或GetSystemDirectory得到,如果是和可执行文件放在一起,使用getcwd得到,最好是在app的InitInstance中使用GetCurrentDirectory得到当前路径,然后保存到一个CString中,这是最准确的
      

  5.   

    CFileDialog初始化时指定OFN_NOCHANGEDIR标志,如:CFileDialog dlg(TRUE,NULL,NULL,OFN_NOCHANGEDIR);
      

  6.   

    如果你稍微搜索一下“可执行程序 路径”,你就会知道
    __argv[ 0 ]有什么用了,用AfxMessageBox( __argv[ 0 ] )看看
      

  7.   

    事实证明txdxun的提前以全局变量保存当前路径比较可行!
    大家还有没有可行的办法?
      

  8.   

    你在打开CFileDialog时指明不要更改当前路径不是更好吗
      

  9.   

    txdsun的用法在双击快捷方式运行在我的机子上不对。__argv[ 0 ]还是对的
      

  10.   

    Hankuu说的不适合我碰到的这样一种情况,因为不改变当前路径就意味着用户虽然选择了其它路径,但是无效的,他的设置还是要保存在应用程序所在的目录。
    我用的是txdsun的方法,双击快捷方式也好使,可能jennyvenus碰到的情况跟我们有点不同。大家有什么意见请直言!
      

  11.   

    你从CFileDialog中取出用户所选的文件路径,也可以写入信息
    但你本来的运行环境不变,避免影响程序中其它部分
      

  12.   

    我试试Hankuu的办法,之前我没想到取出用户所选的路径!