同上,mFinder是不是一个有效的对象。

解决方案 »

  1.   


    // 参考MSDN的例子用法
    void Recurse(LPCTSTR pstr)
    {
       CFileFind finder;   // build a string with wildcards
       CString strWildcard(pstr);
       strWildcard += _T("\\*.*");   // start working for files
       BOOL bWorking = finder.FindFile(strWildcard);   while (bWorking)
       {
          bWorking = finder.FindNextFile();      // skip . and .. files; otherwise, we'd
          // recur infinitely!      if (finder.IsDots())
             continue;      // if it's a directory, recursively search it      if (finder.IsDirectory())
          {
             CString str = finder.GetFilePath();
             TRACE(_T("%s\n"), (LPCTSTR)str);
             Recurse(str);
          }
       }   finder.Close();
    }void PrintDirs()
    {
       Recurse(_T("C:"));
    }
      

  2.   

    要遍历目录,3楼已经给出示例,提醒楼主一下,msdn关于GetFileName有如下描述:You must call FindNextFile at least once before calling GetFileName.再给一个例子,供楼主参考CFileFind finder;
    static const TCHAR szFileToFind[] = _T("C:\\WINDOWS\\SYSTEM.INI");BOOL bResult = finder.FindFile(szFileToFind);if (bResult)
    {
       finder.FindNextFile();   TRACE(_T("Root of %s is %s\n"), szFileToFind, 
          (LPCTSTR)finder.GetRoot());   TRACE(_T("Title of %s is %s\n"), szFileToFind, 
          (LPCTSTR)finder.GetFileTitle());   TRACE(_T("Path of %s is %s\n"), szFileToFind,
          (LPCTSTR)finder.GetFilePath());   TRACE(_T("URL of %s is %s\n"), szFileToFind,
          (LPCTSTR)finder.GetFileURL());   TRACE(_T("Name of %s is %s\n"), szFileToFind,
          (LPCTSTR)finder.GetFileName());   finder.Close();
    }
    else
    {
       TRACE(_T("You have no %s file.\n"), szFileToFind);
    }