⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pheiftpdlg.cpp

📁 非常小巧的FTP Client 程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
}
void CPheiFTPDlg::OnSite18()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=17;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite19()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=18;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite20()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=19;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite21()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=20;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite22()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=21;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite23()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=22;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite24()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=23;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite25()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=24;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite26()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=25;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite27()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=26;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite28()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=27;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite29()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=28;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}
void CPheiFTPDlg::OnSite30()
{
	if(flagconnect)
        OnButtonDisconnect();
   int num=29;
   m_server=_T(sitearray[num].server);
   m_user=_T(sitearray[num].user);
   m_password=_T(sitearray[num].password);
   m_port=_T(sitearray[num].port);
   UpdateData(FALSE);
   OnButtonConnect();
}


void CPheiFTPDlg::UploadDir(CString & updir)
{
     if(m_pFtpConnection->CreateDirectory(updir))
	 {
		  if(m_remdir==_T("/"))
		      m_remdir=m_remdir+updir;
		  else
		      m_remdir=m_remdir+_T("/")+updir;
        
          //if the selected item is dir,open it for remote dir.
           if(m_pFtpConnection->SetCurrentDirectory(m_remdir))
		   {
				SetRemDir(m_remdir);

			    //change local dir
                m_locdir=m_locdir+_T("\\")+updir;
				SetLocDir(m_locdir);
 				UpdateData(FALSE);

				//upload all file and dir in m_locdir
				CFileFind finder;
                CString strallfd=m_locdir+_T("\\*.*");
                CString currfd;
                BOOL bWorking = finder.FindFile(strallfd);
                while (bWorking)
				{  
                     bWorking = finder.FindNextFile();
                     currfd=finder.GetFileName();
	                 if(finder.IsDots() || finder.IsHidden() || finder.IsSystem())
		                  continue;
	                 else if(finder.IsDirectory())
	                      UploadDir(currfd);
	                 else
		                  Uploadsf(currfd);
				}

                UpdateData(FALSE);
				OnButtonLocparent();
				OnButtonRemparent();				
		   }
           else
				UpdateData(TRUE);
	 }
}

void CPheiFTPDlg::DownloadDir(CString & downdir)
{
	CString dirarr[300];
	int dircount=0;
	CString md=m_locdir+_T("\\")+downdir;
    _mkdir(md);
	 //change local dir
      m_locdir=m_locdir+_T("\\")+downdir;
	  SetLocDir(m_locdir);
 	  UpdateData(FALSE);
		 
	  //change remote dir
	  if(m_remdir==_T("/"))
		   m_remdir=m_remdir+downdir;
	  else
		   m_remdir=m_remdir+_T("/")+downdir;
      if(m_pFtpConnection->SetCurrentDirectory(m_remdir))
	  {
		   SetRemDir(m_remdir);

		   //download every file or dir in remote dir
	        CFtpFileFind ftpFind(m_pFtpConnection);
			CString strremdir=m_remdir+ _T("/*.*");
        	BOOL bContinue = ftpFind.FindFile(strremdir);
	       if (!bContinue)
		   {
			    ftpFind.Close();
		         return;
		   }
	       CString strFileName;
	       while (bContinue) 
		   {
				bContinue = ftpFind.FindNextFile();
		        strFileName = ftpFind.GetFileName();
                if(ftpFind.IsDots())
		            continue;
	            else if(ftpFind.IsDirectory())
				{
                    dirarr[dircount]=strFileName;
					dircount++;
				}
           	    else
		            Downloadsf(strFileName);
		   }
	      ftpFind.Close();
		  for(int id=0;id<dircount;id++)
		  {
		       DownloadDir(dirarr[id]);
		  }
		            

		  //finish downloading,return to parent dir
		    UpdateData(FALSE);
		    OnButtonLocparent();
			OnButtonRemparent();
	  }
	  else
		  UpdateData(TRUE);

}

void CPheiFTPDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
   CMenu ctmenu;
   CRect rectloc;
   CRect rectrem;
   GetDlgItem(IDC_LIST_LOCFILE)->GetWindowRect(rectloc);
   GetDlgItem(IDC_LIST_REMFILE)->GetWindowRect(rectrem);
   ctmenu.CreatePopupMenu();
   if(rectloc.PtInRect(point))
   {
       //display the contextmenu in list locfile

	    int nItem=0;
        POSITION  pos = m_locfile.GetFirstSelectedItemPosition();
        if (pos == NULL)
             ctmenu.AppendMenu(MF_STRING,ID_MENU_MAKELOCDIR,"make local dir");
        else
		{
             nItem = m_locfile.GetNextSelectedItem(pos);
		     CString seldir;
		     CString seldirbup;
             seldirbup=m_locfile.GetItemText(nItem,0);
		     seldir=m_locdir+slope+seldirbup;
			 activelocfd=seldir;
        
		     //the selected item is dir?
		     CFileFind finder;  
             BOOL bWorking = finder.FindFile(seldir);
             if (bWorking)
			 {
                 bWorking = finder.FindNextFile();
                 if(finder.IsDirectory())
				 {
                    //if the selected item is dir
	                ctmenu.AppendMenu(MF_STRING,ID_MENU_DELLOCDIR,"delete local dir");
				 }
				 else
				 {
     	            ctmenu.AppendMenu(MF_STRING,ID_MENU_DELLOCFILE,"delete local file");
			        ctmenu.AppendMenu(MF_STRING,ID_MENU_RENLOCFILE,"rename local file");
				 }
						      
			 }
			 finder.Close();

		}

	    ctmenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
   }
   else if(rectrem.PtInRect(point))
   {
       //display the contextmenu in list remfile
        int nItem=0;
        POSITION  pos = m_remfile.GetFirstSelectedItemPosition();
        if (pos == NULL)
             ctmenu.AppendMenu(MF_STRING,ID_MENU_MAKEREMDIR,"make remote dir");
        else
		{
             nItem = m_remfile.GetNextSelectedItem(pos);
		     CString seldir;
		     CString seldirbup;
			 CString browfd;
             seldirbup=m_remfile.GetItemText(nItem,0);
			 if(m_remdir==_T("/"))
			 {
				 seldir=m_remdir+_T("*.*");
				 activeremfd=m_remdir+seldirbup;
			 }
		     else
			 {
				 seldir=m_remdir+_T("/*.*");
				 activeremfd=m_remdir+_T("/")+seldirbup;
			 }
        
		     //the selected item is dir?
		     CFtpFileFind finder(m_pFtpConnection);  
             BOOL bWorking = finder.FindFile(seldir);
             while(bWorking)
			 {
                 bWorking = finder.FindNextFile();
				 browfd=finder.GetFileName();
				 if(browfd!=seldirbup)
					 continue;
                 if(finder.IsDirectory())
				 {
                    //if the selected item is dir
	                ctmenu.AppendMenu(MF_STRING,ID_MENU_DELREMDIR,"delete remote dir");
				 }
				 else
				 {
     	            ctmenu.AppendMenu(MF_STRING,ID_MENU_DELREMFILE,"delete remote file");
			        ctmenu.AppendMenu(MF_STRING,ID_MENU_RENREMFILE,"rename remote file");
				 }
						      
			 }
			 finder.Close();

		}

	    ctmenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
   }
   else
	   return;

}

void CPheiFTPDlg::OnMakeLocdir()
{
	CString strdirname;
	CDirname dlgdirname;
	if(dlgdirname.DoModal()==IDOK)
		strdirname=dlgdirname.m_dirname;
	if(strdirname.IsEmpty())
		return;
	else
	{
		CString md=m_locdir+_T("\\")+strdirname;
        _mkdir(md);
		SetLocDir(m_locdir);
	}
}

void CPheiFTPDlg::OnDelLocdir()
{
    dellocaldir(activelocfd);
	SetLocDir(m_locdir);	
}

void CPheiFTPDlg::OnDelLocfile()
{
	CFile::Remove(activelocfd);
	SetLocDir(m_locdir);	
}

void CPheiFTPDlg::OnRenLocfile()
{
    CFname renfn;
	CString newfname;
	if(renfn.DoModal()==IDOK)
	{
        newfname=m_locdir+_T("\\")+renfn.m_fname;
		if(newfname==activelocfd)
		{
            AfxMessageBox("Please enter a different filename!");
			return;
		}
		else
		{
			CFile::Rename(activelocfd,newfname);
			SetLocDir(m_locdir);
		}
	}
}

void CPheiFTPDlg::OnMakeRemdir()
{
	CString strdirname;
	CDirname dlgdirname;
	if(dlgdirname.DoModal()==IDOK)
		strdirname=dlgdirname.m_dirname;
	if(strdirname.IsEmpty())
		return;
	else
	{
		CString md=m_remdir+_T("/")+strdirname;
        m_pFtpConnection->CreateDirectory(md);
		SetRemDir(m_remdir);
	}
}

void CPheiFTPDlg::OnDelRemdir()
{
	CString confirm=_T("Are you sure to remove the dir and all its components?");
	if(AfxMessageBox(confirm,MB_OKCANCEL)==IDOK)
	{
         delremotedir(activeremfd);
		
         SetRemDir(m_remdir);
	}
}

void CPheiFTPDlg::OnDelRemfile()
{
    delremotefile(activeremfd);
	SetRemDir(m_remdir);
}

void CPheiFTPDlg::OnRenRemfile()
{
    CFname renfn;
	CString newfname;
	if(renfn.DoModal()==IDOK)
	{
        newfname=m_remdir+_T("/")+renfn.m_fname;
		if(newfname==activeremfd)
		{
            AfxMessageBox("Please enter a different filename!");
			return;
		}
		else
		{
            m_pFtpConnection->Rename(activeremfd,newfname);
			SetRemDir(m_remdir);
		}
	}
}

void CPheiFTPDlg::delremotefile(CString &rf)
{
   m_pFtpConnection->Remove(rf);
}

void CPheiFTPDlg::delremotedir(CString &rd)
{
    m_pFtpConnection->SetCurrentDirectory(rd);

    //delete all the files and dirs in the dir
	CFtpFileFind ftpFind(m_pFtpConnection);
	BOOL bContinue = ftpFind.FindFile(rd);
	CString strFileName;
	CString dirarr[300];
	int dircount=0;

	while (bContinue) 
	{
		bContinue = ftpFind.FindNextFile();
		strFileName = ftpFind.GetFileName();
    	if(ftpFind.IsDirectory())
		{
			dirarr[dircount]=strFileName;
			dircount++;
		}
	    else
		  delremotefile(strFileName);
	}
	ftpFind.Close();
	for(int id=0;id<dircount;id++)
	{
        CString fulldir=rd+_T("/")+dirarr[id];
		delremotedir(fulldir);
	}
	
	//return to parent dir and del "rd" itself
     CString tdir=rd;
	 int slopepos=tdir.ReverseFind('/');
	 if(slopepos==-1)
		 return;
	 tdir=tdir.Left(slopepos);
	 if(tdir.IsEmpty())
		 tdir=_T("/");

     if(m_pFtpConnection->SetCurrentDirectory(tdir))
	 {
         m_pFtpConnection->RemoveDirectory(rd);
	 }

}

void CPheiFTPDlg::dellocaldir(CString &ld)
{
   CFileFind finder;
   CString strallfd=ld+_T("\\*.*");
   CString currfd;
   BOOL bWorking = finder.FindFile(strallfd);
   while (bWorking)
   {
      bWorking = finder.FindNextFile();
      currfd=finder.GetFilePath();
      if(finder.IsDots())
		  continue;
	  else if(finder.IsDirectory())
	     dellocaldir(currfd); 
	  else
		  CFile::Remove(currfd);
   } 
   finder.Close();
   //return to parent dir and delete ld itself
    RemoveDirectory(ld);
	return;
   
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -