void CRWTextFileDlg::SearchFile(CString StrPath1,CString StrItem)
{
CFileFind OneFile1;
CString  DirName1;
BOOL BeWorking1;  DirName1 = StrPath1+"\\*.*";
BeWorking1 = OneFile1.FindFile( DirName1 );
// faItem=m_Tree.InsertItem(OneFile.GetFileTitle(),TVI_ROOT);
while ( BeWorking1 ) {   //BeWorking非零,指找了文件或目录
//查找同级的目录
BeWorking1= OneFile1.FindNextFile();
if ( OneFile1.IsDirectory() && !OneFile1.IsDots() )      //如果查找的结果是目录又不是".."或"."
{
   DirName1 = OneFile1.GetFilePath();
   if(DirName1.Find(StrItem)>-1)
   {
   m_List.AddString(DirName1);
   ProcessFile(DirName1);
   
   }
   SearchFile(DirName1,StrItem);
}
//退出递归时,到了这里!!!
else if ( !OneFile1.IsDirectory() && !OneFile1.IsDots() )     //如果查找结果是文件
{
DirName1 = OneFile1.GetFilePath();
  
if(DirName1.Find(StrItem)>-1)
    {
   m_List.AddString(DirName1);
   ProcessFile(DirName1);    
    }
}
}// end of while
OneFile1.Close();
}

解决方案 »

  1.   

    其中ProcessFile(DirName1); 是对文件的处理
      

  2.   

    着么会呢?ProcessFile处理的什么?
      

  3.   

       不需要管它处理什么呀  反正它就是处理找到的那个文件  这个函数就是一个遍历文件夹 StrPath1它为遍历的文件夹名  StrItem它为文件名  如.cpp 文件        我的意思是能够找到这种文件然后对它处理~~ 如进行读写
      

  4.   

    m_List.AddString(DirName1);
    ProcessFile(DirName1);
    这两句是紧挨着的,上面那句执行了,你的意思是说下面那句没执行吗?
      

  5.   

     OneFile1.FindFile( DirName1 );
     OneFile1.FindFirstFile( DirName1 );
      

  6.   

    用FindFirstFile FindNextFile 才能搜索。
      

  7.   


    error C2039: “FindFirstFileA”: 不是“CFileFind”的成员 ///////
      

  8.   

    那是API
    CFileFind是2005后才有的吧?
      

  9.   

     我用的vs2010  这是MFC工程 我上面的代码没有错误 只是处理的时候  它 只处理我找到的第一个文件里面的东西  而其他找到的文件都不处理了  
      

  10.   

     问题是我结果中貌似 能够找到我所需要的全部文件  只是处理的时候(使用的ProcessFile(DirName1);) 只对我找到的第一个文件处理  
      

  11.   

    那是ProcessFile(DirName1)的问题了。
      

  12.   

     它就是调用一个函数 进入的都是DirName1 DirName1在遍历的过程中不是变化的么? 难道不是每次都调用这个函数么? 跟我函数有什么关系啊   肯定是ProcessFile(DirName1) 只调用了一次  
      

  13.   

    查查:
    if(DirName1.Find(StrItem)>-1)
    {
    m_List.AddString(DirName1);
    ProcessFile(DirName1);
      
    }
    这个if有没有问题。