📄 ftpdlg.cpp
字号:
lvi.pszText = pItem->m_strSec.GetBuffer(0);
pItem->m_strSec.ReleaseBuffer();
lvi.iItem = ndx;
lvi.iSubItem = 2;
m_ctrlServerFile.SetItem( &lvi );
if (pItem->GetImage()==7)
m_ctrlServerFile.SetItemData(ndx,DIRECTORYICON);
else
m_ctrlServerFile.SetItemData(ndx,FILEICON);
return (pItem != NULL);
}
void CFtpDlg::OnDblclkListLocalfile(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVDISPINFO* pLocInfo=(NMLVDISPINFO*)pNMHDR;
CString str,str1,filename,buf;
int iIcon,iIconSel;
str.Format("%d",pLocInfo->item);
if(str=="-1")
return;
int nItem=atoi(str);
DWORD dwFlag=m_ctrlLocalFile.GetItemData(nItem);
if(dwFlag==FILEICON)
{
//OnLocFileOpen();
if(m_bIsLogon == false)
{
MessageBox("请先连接服务器!");
return;
}
// str=szLocDirectory;
// m_ctrlLocalFile.GetItemText(nItem,0,szLocDirectory,MAX_PATH);
// str1=szLocDirectory;
filename=str1;
if (str.Right(1)!="\\")
str1=str+"\\"+str1;
else
str1=str+str1;
// strcpy(szLocDirectory,str);
if (MessageBox( "是否确定上传文件: "+str1, 0, MB_OKCANCEL)==IDOK)
{
UpLoadFile(str1,filename,m_PASV,false);
m_ctrlServerFile.UpdateData();
m_Message=m_Message+str1+"已经上传完毕"+"\r\n";
UpdateData(false);
}
return;
}
// ::GetCurrentDirectory(MAX_PATH,szLocDirectory);
// str=szLocDirectory;
// m_ctrlLocalFile.GetItemText(nItem,0,szLocDirectory,MAX_PATH);
// buf=szLocDirectory;
if(str.Right(1)!="\\")
str+="\\";
// str+=szLocDirectory;
GetFileIcon(buf,&iIcon,&iIconSel);
int i=InsertLocDir(str,iIcon,iIconSel);
m_ctrlLocal.SetCurSel(i);
::SetCurrentDirectory(str);
// ::GetCurrentDirectory(MAX_PATH,szLocDirectory);
BeginFindLocFile();
*pResult = 0;
}
void CFtpDlg::OnDblclkListServerfile(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NMLVDISPINFO* pLocInfo=(NMLVDISPINFO*)pNMHDR;
CString str,tempstr,tempstr2,buf;
int pos1=0;
str.Format("%d",pLocInfo->item);
if(str=="-1")
return;
int nItem=atoi(str);
DWORD dwFlag=m_ctrlServerFile.GetItemData(nItem);
tempstr2=m_ctrlServerFile.GetItemText(nItem,0);
if(dwFlag==FILEICON)
{
// str=szFtpDirectory;
if (str.Right (1)!="/")
str+="/"+tempstr2;
else
str+=tempstr2;
if (MessageBox( "是否确定下载文件: "+tempstr2, 0, MB_OKCANCEL)==IDOK)
{
DownLoadFile(str,tempstr2,m_PASV,true);
m_Message=m_Message+tempstr2+"已经下载完毕"+"\r\n";
UpdateData(false);
UpdateData(true);
}
return;
}
// str=szFtpDirectory;
// tempstr=szFtpDirectory;
if(str.Right (1)!="/")
str+="/";
str+=m_ctrlServerFile.GetItemText(nItem,0);
tempstr2=m_ctrlServerFile.GetItemText(nItem,0);
if(!tempstr2.CompareNoCase(".."))
{
if (tempstr=="/")
return;
else
{
m_ctrlServerFile.DeleteAllItems ();
Back();
pos1=tempstr.GetLength ()-1;
while (pos1>=0)
{
if (tempstr.Mid (pos1,1)!="/")
pos1--;
else
{
str=tempstr.Mid (0,pos1);
if(str.GetLength()==0)
str="/";
break;
}
}
// strcpy(szFtpDirectory,str);
SetServerDir(str);
}
}
else if(!tempstr2.CompareNoCase("."))
{
UpdateData(false);
return ;
/* str="/";
SetServerDir(str);
m_ctrlServerFile.DeleteAllItems ();
int ndx;
ftp.List ();
while(ftp.GetLine(ndx))
{
AddLine(ftp.m_strLine );
str="/";
strcpy(szFtpDirectory,str);
SetServerDir(str);
}
ftp.FTPcommand("");
*/
}
else
{
m_ctrlServerFile.DeleteAllItems ();
CD(str);
// strcpy(szFtpDirectory,str);
SetServerDir(str);
}
*pResult = 0;
}
void CFtpDlg::OnSelchangeComboboxexLocal()
{
CString str;
char lpBuffer[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,lpBuffer);
int i=m_ctrlLocal.GetCurSel();
m_ctrlLocal.GetLBText(i,(LPTSTR)(LPCTSTR)str);
i=0;
while(1)
{
if(!SetCurrentDirectory(str))
{
i++;
if(i<2)
{
AfxMessageBox("请插入磁盘再试");
continue;
}
str=lpBuffer;
if((i=m_ctrlLocal.FindStringExact(-1,str))!=-1)
m_ctrlLocal.SetCurSel(i);
else
m_ctrlLocal.SetWindowText(str);
}
else
{
::SetCurrentDirectory(str);
GetLocCurrentDirectory();
BeginFindLocFile();
}
break;
}
}
void CFtpDlg::UpLoadFile(CString LocalFilePath,CString LocalFileName,bool pasv,bool get)
{
CString str;
// str=szFtpDirectory;
if (str.Right(1)!="/")
str+="/"+LocalFileName;
else
str+=LocalFileName;
ftp.MoveFile (str,LocalFilePath,pasv,get);
}
void CFtpDlg::DownLoadFile(CString ServerFilePath,CString ServerFileName,bool pasv,bool get)
{
CString str;
// str=szLocDirectory;
if (str.Right(1)!="\\")
str+="\\"+ServerFileName;
else
str+=ServerFileName;
ftp.MoveFile (ServerFilePath,str,pasv,get);
}
void CFtpDlg::CD(CString dir)
{
int ndx=0;
dir.TrimLeft();
dir.TrimRight();
CString cmd = "CWD " + dir;// + "\r\n";
ftp.FTPcommand(cmd);
ftp.FTPcommand("PWD");
ftp.List();
while(ftp.GetLine(ndx))
{
UpdateData(false);
AddLine(ftp.m_strLine );
}
ftp.FTPcommand("");
}
void CFtpDlg::Back()
{
int ndx=0;
ftp.FTPcommand("CDUP");
ftp.List();
while(ftp.GetLine(ndx))
{
UpdateData(false);
AddLine(ftp.m_strLine );
}
ftp.FTPcommand("");
}
LRESULT CFtpDlg::OnSetLocRedrawFlag(WPARAM wParam,LPARAM lParam)
{
if(m_bHaveDotFlag)
{
CString str="..";
int iIcon=DIRECTORYICON;
m_ctrlLocalFile.InsertItem(0,str,iIcon);
m_ctrlLocalFile.SetItemData(0,DIRECTORYICON);
m_bHaveDotFlag=FALSE;
}
m_ctrlLocalFile.Invalidate();
m_ctrlLocalFile.SetRedraw();
return 0L;
}
LRESULT CFtpDlg::OnSetLocDirectoryDisplay(WPARAM wParam,LPARAM lParam)
{
CString str;
// str=szLocDirectory;
m_ctrlLocal.SetWindowText(str);
m_ctrlLocal.Invalidate();
return 0L;
}
LRESULT CFtpDlg::OnReDisplayLocFile(WPARAM wParam,LPARAM lParam)
{
CString str=(LPCTSTR)wParam;
m_ctrlLocal.SetWindowText(str);
m_ctrlLocal.Invalidate();
GetLocCurrentDirectory();
if(!BeginFindLocFile())
AfxMessageBox("建立网络线程失败");
return 0L;
}
LRESULT CFtpDlg::OnInsertLocFile(WPARAM wParam,LPARAM lParam)
{
FILE_FTP_INFO* pInfo=(FILE_FTP_INFO*)wParam;
CString str=pInfo->szFileName;
if(str=="."||str=="..")
{
m_bHaveDotFlag=TRUE;
return 0L;
}
OnInsertFile(&m_ctrlLocalFile,pInfo,lParam);
return 0L;
}
LRESULT CFtpDlg::OnSetLocDir(WPARAM wParam,LPARAM lParam)
{
CString str=(LPCTSTR)lParam;
m_ctrlLocal.SetWindowText(str);
m_ctrlLocalFile.SetRedraw(FALSE);
m_ctrlLocalFile.DeleteAllItems();
m_ctrlLocalFile.SetRedraw();
return 0L;
}
void CFtpDlg::OnInsertFile(CListCtrl* pListCtrl,LPVOID pIn,LPARAM lParam)
{
FILE_FTP_INFO*pInfo=(FILE_FTP_INFO*)pIn;
LVITEM lvIt;
int iIcon,nItem;
if(pInfo->nType==DIRECTORYICON)
nItem=0;
else
nItem=pListCtrl->GetItemCount();
CString fileName=pInfo->szFileName;;
if((int)lParam==LOCFILE)
GetFileIcon(fileName,&iIcon,0);
else
iIcon=pInfo->nType;
lvIt.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
lvIt.iImage=iIcon;
lvIt.lParam=pInfo->nType;
lvIt.pszText=pInfo->szFileName;
lvIt.iSubItem=0;
lvIt.iItem=nItem;
int iPos=pListCtrl->InsertItem(&lvIt);
lvIt.mask=LVIF_TEXT;
lvIt.iItem=iPos;
lvIt.pszText=pInfo->szFileDate;
lvIt.iSubItem=1;
pListCtrl->SetItem(&lvIt);
//m_ctrlLocalFile.SetItem(&lvIt);
lvIt.pszText=pInfo->szFileSize;
lvIt.iSubItem=2;
pListCtrl->SetItem(&lvIt);
//IsFree=TRUE;
}
void CFtpDlg::GetMessage(CString filepath, CString filename, CString Server, int Port, CString UID, CString PWD,int PASV )
{
m_Server = Server;
m_Port = Port;
m_UID = UID;
m_PWD = PWD;
m_PASV = PASV;
m_filename = filename;
m_filepath = filepath;
if(!Connect())
{
MessageBox("连接服务器失败!请检查网络!");
return;
}
if (MessageBox( "是否确定上传文件: "+m_filename, 0, MB_OKCANCEL)==IDOK)
{
UpLoadFile(m_filepath,m_filename,m_PASV,false);
MessageBox("已经上传完毕");
}
}
bool CFtpDlg::Connect()
{
int ndx=0;
CString str;
m_bIsLogon = ftp.LogOnToServer(m_Server,m_Port,m_UID,m_PWD,"","","","",1080,0);
if(m_bIsLogon == false)
return false;
else
{
ftp.List ();
ftp.FTPcommand("");
}
return true;
}
/*void CFtpDlg::OnRclickListLocalfile(NMHDR* pNMHDR, LRESULT* pResult)
{
/* CItemInfo ItemInfo;
CMenu Menu;
Menu.CreatePopupMenu();
ItemInfo.sText = "新建(&N)\tCtrl + N";
// ItemInfo.uIdNormal = IDI_ICON1;
// ItemInfo.uIdSelect = IDI_ICON2;
Menu.AppendMenu(MF_OWNERDRAW, 0, (LPCTSTR)(&(ItemInfo)));
CPoint ptScreen;
ClientToScreen(&ptScreen);
Menu.TrackPopupMenu(TPM_RIGHTBUTTON, ptScreen.x, ptScreen.y, this);
*pResult = 0;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -