如何查找ini文件所在路径,我用API函数GetFullPathName(),不好用,文件是放在工程目录下,但编译好的执行文件在有的机子上找的到,有的机子上找不到这个ini文件。是不是和系统有关系,有没有什么办法取代这个函数,来查找文件的路径?

解决方案 »

  1.   

    用CFileDialog 动态的找不可以吗?
      

  2.   

    你将ini文件放置在应用程序跟目录下(即和应用程序可执行文件放在同一个目录)
    然后用以下代码即可获得应用程序可执行文件所在的目录:
    TCHAR lpszFileName[MAX_PATH+1];
    ::GetModuleFileName(NULL,lpszFileName,MAX_PATH+1);
    CString sModulePath = lpszFileName;
    int index = sModulePath.ReverseFind('\\');
    sModulePath = sModulePath.Left(index+1);
    由于ini文件和可执行文件在同一个目录,自然就肯定能够找到了。
      

  3.   

    又是用API函数啊,请问我用这个函数GetFullPathName,而且把ini文件放在可执行文件的同一目录里,怎么有时找的到有时找不到呢?
      

  4.   

    比如说建个BUTTON,在BUTTON响应函数里
    CString m_filter;
      CFileDialog fdlg1(TRUE, "", m_filter, OFN_EXPLORER |
                                  OFN_ENABLESIZING |
                                 OFN_FILEMUSTEXIST | 
                                  OFN_HIDEREADONLY | 
                                  OFN_PATHMUSTEXIST,
    "(*.ini)|*.ini|所有文件(*.*)|*.*||", this);//
    if(fdlg1.DoModal() == IDOK)
    {
    //m_filter = fdlg1.GetFileName();
    m_filter = fdlg1.GetPathName();
      

  5.   

    用GetLastError看看是什么错误。
      

  6.   

    还是不知道什么原因,GetFullPathName不好用,GetModuleFileName就没问题,谢谢快乐鹦鹉,谢谢大家!