以下是我的代码,我只能查找到第一层目录下的文件和目录,通过递归进入到第二层目录后FindFile()的返回结果为0,请问为什么谢谢!
void CAnsyDlg::search(CString path)
{
CFtpFileFind* pFileFind;
CString strFileName;
BOOL bContinue;
pFileFind=NULL;
if(pConnection!=NULL)
{
  //创建CFtpFileFind对象
  //传递CFtpConnection对象的指针
  pFileFind=new CFtpFileFind(pConnection);
  //查找任意文件
  bContinue=pFileFind->FindFile(path+"*.*");
  while(bContinue)
  {
   //查找下一个文件
   bContinue=pFileFind->FindNextFile();
   strFileName=pFileFind->GetFileName();
   if(strFileName=="."||strFileName=="..")continue;
   //判断是否为目录
   if(pFileFind->IsDirectory())
   {
    search(path+strFileName+"/");
   }
   else
   {
    //显示文件名信息
    m_strMsg=m_strMsg+strFileName;
    UpdateData(FALSE);
   }
  }
if(pFileFind!=NULL)
{
  pFileFind->Close();
  pFileFind=NULL;
}
delete pFileFind;
}
}

解决方案 »

  1.   

    测试过的代码
    void Cmfcftp3Dlg::List()
    {
      CString m_i;
      CString m_ii;   CStringArray m_Dir;   CFtpFileFind   finder(m_pFtpConnection);
          BOOL bWorking=finder.FindFile(_T("*"));   while (bWorking)
             {
               bWorking = finder.FindNextFile();    if ( finder.IsDots() ) continue;
       if (  finder.IsHidden() ) continue;    if (finder.IsDirectory())
           {  
      m_Dir.Add( finder.GetFileName());
            }
       else
              {
       m_i=finder.GetFileName()+"\r\n";
       m_ftpinfo +=m_i;
               UpdateData(FALSE);
            }
       }
     finder.Close();  for(int i=0;i<m_Dir.GetSize();i++)
     {             m_i="["+m_Dir.GetAt(i)+"]"+"\r\n";
         m_ftpinfo +=m_i;
     UpdateData(FALSE);      m_pFtpConnection->SetCurrentDirectory(m_Dir.GetAt(i));
                
     List();       m_pFtpConnection->SetCurrentDirectory("..");
       }}