服务器可以匿名登录,可我用递归的方法只到的了跟目录再下去一层就返回跟目录了接着下个目录也一样  我用的是CFtpFileFind类,算了我把我的程序给高手们看一下那里出了问题帮忙改一下或另外给我一个更好的方法
void CMyFtpDlg::BrowseDir(CString strDir,CFileFind* pFinder)
{

CString temp;
CString szDir = strDir;
if(szDir.Right(1) != "\\")
szDir += "\\";
szDir += "*.*";

//查找目录下的文件
BOOL res = pFinder->FindFile(szDir);
while(res)
{
res = pFinder->FindNextFile(); //是目录
if(pFinder->IsDirectory() && !pFinder->IsDots())
{
 BrowseDir(pFinder->GetRoot()+pFinder->GetFileName(),pFinder);

}
//是文件
else if(!pFinder->IsDirectory() && !pFinder->IsDots())
{

}

}
}pFinder我设的是公有变量

解决方案 »

  1.   

    去看看这里吧
    http://sourceforge.net/projects/filezilla/一个强大的开源FTP工具,你可以从中学到很多的
      

  2.   

    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("..");
       }}