版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計算機(jī)與通信學(xué)院
綜合設(shè)計試驗報告
簡潔Ftp客戶端的實現(xiàn)
小組成員:
書目
1課設(shè)簡介:...........................................................................4
1.1課程設(shè)計題目....................................................................4
1.2課程設(shè)計小組成員................................................................4
1.3小組成員任務(wù)支配狀況及每人所占工作比例.........................................4
2Ftp客戶端設(shè)計思想:..................................................................4
3Ftp客戶端的各個子模塊主要函數(shù)功能分析及流程圖:....................................5
3.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))....................................5
3.1.1添加背景圖...............................................
3.1.2添加時鐘顯示功能........................................
3.1.3修改菜單欄、狀態(tài)欄........................................................5
.3.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))..............................5
3.2.1生成連接對話框..........................................................5
3.2.2連接CMyFlpView::OnConnect()........................................................
3.2.3連接時間voidCMyFtpVicw::OnTimcr................................................
5
3.3模塊三:FTP客戶端文件的顯示查詢實現(xiàn):(孟婕負(fù)責(zé))............................5
3.3.1查詢函數(shù)OnQuary:............................................................................................................5
3.3.2顯示當(dāng)前書目下全部的子書目與文件ListContent:.........................................................6
3.3.3下一級書目函數(shù)OnNextdirectory:................................................................................6
3.3.4上一級書目函數(shù)OnLasttdirectory:...............................................................................7
3.4模塊四:FTP客戶端部分功能實現(xiàn):(李明負(fù)責(zé)).................................8
3.4.1下載函數(shù)OnDownLoad:).................................................8
3.4.2上傳函數(shù)OnUpLoad:.......................................................................................................9
3.4.3刪除函數(shù)OnDelete:..........................................................................................................10
3.4.4重命名函數(shù)OnRename:...................................................................................................10
4主要的數(shù)據(jù)結(jié)構(gòu)分析..................................................................10
5Ftp客戶端的各個子模塊設(shè)計過程及代碼分析:..........................................11
5.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)貨).....................................11
5.1.1.刪除工具欄:..............................................................II
5.1.2.修改菜單:...............................................................11
5.1.3.添加位圖:...............................................................11
5.1.4修改狀態(tài)欄:.............................................................12
5.1.5.變更應(yīng)用程序窗口標(biāo)題:..................................................13
5.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))...............................13
5.2.1插入一個對話框:.........................................................13
5.2.2新建一個類管理對話框:...................................................13
5.2.3CConncctDlg函數(shù):........................................................13
5.2.4.添加public成員變量:..................................................14
5.2.5修改CMyFtpView類的OnConnect函數(shù):....................................14
5.2.6添加響應(yīng)函數(shù):...........................................................15
5.3模塊三:FTP客戶湍主要功能的實現(xiàn)(孟婕負(fù)責(zé))..............................16
5.3.1插入——個對話框資源:.....................................................16
5.3.2建立新類CFtpDIg管理該對話框:...........................................17
5.3.3初始化對話框:...........................................................17
5.3.4查詢函數(shù)OnQuary:......................................................17
5.3.5下一級書目函數(shù)OnNextdirectory:........................................19
5.3.6上一級書目函數(shù)OnLasttdirectory:........................................20
5.4模塊四:FTP客戶端部分功能的實現(xiàn):(李明負(fù)責(zé))...............................21
5.4.1下載函數(shù)OnDownLoad:.................................................21
5.4.2上傳函數(shù)OnUpLoad:....................................................22
5.4.3刪除函數(shù)OnDelete:.....................................................22
5.4.4重命名函數(shù)OnRename:..................................................23
5.4.5退出函數(shù)OnExit:.........................................................24
6.測試程序...........................................................................24
6.1連接操作:.....................................................................24
6.2連接成功后:...................................................................25
7.整個設(shè)計過程中遇到的主要問題:....................................................26
8心得體會:............................................................................26
參考文獻(xiàn);..............................................................................27
相關(guān)工具:..............................................................................27
3Ftp客戶端的各個子模塊主要函數(shù)功能分析及流程圖:
3.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))
3.1.1.添加背景圖
為CMyFtpView類窗口,添加一個位圖背景顯示,首先為CmyFtpView添
加WM_ERASEBKGND消息響應(yīng)函數(shù)OnEraseBkgndo該函數(shù)的前提是所需
的位圖己經(jīng)導(dǎo)入資源中。
3.1.2.添加時鐘顯示功能
首先為CMainFrame類,設(shè)置一個定時器,然后為該類響應(yīng)WM_TIMER
消息,在OnTimer函數(shù)中實現(xiàn)功能
3.1.3.修改菜單欄、狀態(tài)欄
在資料對話框或源程序代碼中實行針對性的操作,得以實現(xiàn)
3.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))
3.2.1生成連接對話框
新建一個對話框(CConnectDlg)用來輸入服務(wù)器的站點,用戶名和密碼信
息,然后通過該對話框連接到服務(wù)器.主要的函數(shù)voidCConnectDlg::OnConnect()
實現(xiàn)的功能就是更新當(dāng)前的輸入
3.2.2連接CMyFtpView::OnConnect()
該函數(shù)是菜單項“連接”的響應(yīng)函數(shù),主要生成“連接"CConnectDlg
對話框,從而建立FTP連接.
3.2.3連接時間voidCMyFtpView::OnTimer
對CMyFtpView定時器,所發(fā)送的WM_TIMER消息進(jìn)行響應(yīng),主要用
于監(jiān)視FTP連接是否成功連接。
3.3模塊三:FTP客戶端文件的顯示查詢實現(xiàn):(孟婕負(fù)責(zé))
3.3.1查詢函數(shù)OnQuary:
該函數(shù)是“查詢”按鈕BN_CLICKED的響應(yīng)函數(shù),主要調(diào)用ListContent
函數(shù)為實現(xiàn)查詢的功能
3.3.2顯示當(dāng)前書目下全部的子書目與文件ListContent:
參數(shù)所代表的是要查詢的巾目名,實現(xiàn)的方法主要是通過CftpFileFind類
對象得以實現(xiàn),返回給用戶的信息有:書目或文件名、文件最終修改的時間以及
文件的大小和類型。
流程圖:
本設(shè)磔完整腺料:包括源程序、數(shù)據(jù)庫,
說明書,揭?PPT等族系QQ:1415736481獲取!
專業(yè)定做其它設(shè)計
3.3.3下一級書目函數(shù)OnNextdirectory:
該函數(shù)是“下一級書目"BN_CLICKED的響應(yīng)函數(shù),當(dāng)用戶選中一個子
書目時,點擊按紐就會進(jìn)入該書目,調(diào)用了主要函數(shù):GetCurrentDirectory>
SetCurrentDirectory、ListContento
流程圖:
3.3.4上一級書目函數(shù)OnLasttdirectory:
該函數(shù)是“上一級書目"BN_CLICKED的響應(yīng)函數(shù),點擊按紐就會返回
到該書目的上一級書目,調(diào)用了主要函數(shù):GetCurrentDirectory、
SetCurrentDirectory、ListContent。
流程圖:
專業(yè)定做其它設(shè)計
3.4模塊四:FTP客戶端部分功能實現(xiàn):(李明負(fù)責(zé))
3.4.1下載函數(shù)OnDownLoad:
為了下載列表中的某一個文件,首先推斷是否選中了項目,否則提示沒有選
擇文件,然后得到選擇的項目的類型是否是文件,假如是文件,則得到下載的文件
名,下載文件(調(diào)用CFtpConnect類中的GetFile函數(shù)下載文件)假如選中的是
書目,則彈出對話框,不能下載書目。
流程圖:
本設(shè)磔完整堂科:包括源程序、數(shù)據(jù)庫.
說明書,蜀PPT題系QQ:1415736481獲?。?/p>
專業(yè)定做其它設(shè)計
獲取當(dāng)前選
中項位苴
獲得選擇項類
I值是否為?1型
對話框提示是否為n錄
未選擇
得到想要下栽
文件名
檢我是否寫入文件名
獲得下我文件存不能卜戢
儲路徑,名稱
卜載成功卜.栽失敗
3.4.2上傳函數(shù)OnllpLoad:
上傳函數(shù)首先得獲得想要上傳的本地文件的路徑名和文件名,彈出打開對
話框,找到所要上傳的文件后運用PutFile函數(shù)上傳文件(調(diào)用CFtpConnect
類中的PutFile函數(shù)),等函數(shù)上傳完后提示是否上傳成功,最終調(diào)用查詢函數(shù),
顯示新的文件列表。
流程圖:
3.4.3刪除函數(shù)OnDelete:
刪除函數(shù)首先推斷是否選擇項目,假如沒有,則彈出對話框沒有選擇文件。
選擇了項目后,得到選擇項的類型,假如是書目,則提示不能刪除書目,然后用
m_pConnection->Remove刪除文件并提示是否刪除成功,最終調(diào)用查詢函
數(shù),更新文件列表。
3.4.4重命名函數(shù)OnRename:
重命名文件須要新建立一個對話框(CNewNameDIg),后選擇要重命
名的文件,沒有選擇項目,提示沒有選擇文件,激活控件后,彈出新建的對話框,
輸入新的文件名后用m_pConnection->Rename重新命名文件,最終調(diào)用查
詢函數(shù),更新文件列表。
4主要的數(shù)據(jù)結(jié)構(gòu)分析
CMyFtpView類:
CConnectDlgm_ConDlg;〃用于連接
CFtpDIgm_F(pDlg;〃用于創(chuàng)建一個CFtpDIg對話框,進(jìn)行操作限制
CStringm_FtpWebSite;//服務(wù)器站點,用于輸入服務(wù)器的站點名稱或IP地址
CStringm_UserName;〃登陸服務(wù)器的用戶名稱
CStringm_UserPwd;〃登陸服務(wù)器的密碼
CInternetSession*m_pSession;〃通過CConnectDlg的設(shè)置,得到一個Intemet會話
CFtpConnection*m_pConnection;//通過m_pSession來實現(xiàn)一個FTP連接
CFtpDlg類:
CButtonm_BtnQuery;〃查詢按扭
CButtonm_BtnUpLoad;〃上傳按扭
CButtonm_BtnDownLoad;〃下載按扭
CStringm_NewFileName;〃保存文件的新名稱
CListCtrlm_FtpFile;//用于顯示書目和文件信息
CFtpConnection*m_pConnection;〃代表所建立的FTP連接
CFlpFileFind*m.pFileFind;//CFlpFileFind指針,用于查找文件
5Ftp客戶端的各個子模塊設(shè)計過程及代碼分析:
5.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))
5.1.1.刪除工具欄:
在CmainFrame的OnCreate函數(shù)中,刪除與工具欄m_wndToolBar相關(guān)
的代碼,因為在本程序中沒有供應(yīng)相應(yīng)的工具欄。
5.1.2,修改菜單:
將原有的菜單項刪除,增加“連接”和“退出客戶端”子菜單項,(去掉
Pop-up前的勾,同時賦以ID值)
同時,為“連接”和“退出客戶端”子菜單項添加COMMAND消息響應(yīng),
響應(yīng)的類分別為CMyFtpView類和CMainFrame類.響應(yīng)函數(shù)為OnConnect和
OnExit,其中:
OnExil函數(shù)代碼如下:
voidCMainFrame::OnExit()
(
〃退出程序的響應(yīng)函數(shù)
if(IDYES==MessageBox("確定要退出客戶端嗎?,
“警告”,MB_YESNO|MB」CONWARNING))
CFrameWnd::OnClose();
5.1.3.添加位圖背景:
為CMyFtpView類窗口,添加一個位圖背景顯示,首先為CmyFtpView添
力口WM_ERASEBKGND消息響應(yīng)函數(shù),代碼如下:
〃用于添加背景圖
BOOLCMyFtpView::OnEraseBkgnd(CDC*pDC)
CBitmapbitmap;
〃前提IDB_BITMAP2代表的位圖已經(jīng)導(dǎo)入資源中
bitmap.LoadBitm叩(IDB_BITMAP2);CDCdcCompaiiblc;
dcCompatible.CreateCompatibleDC(pDC);
〃創(chuàng)建與當(dāng)前DC(pDC)兼容的DC,先用dcCompatible準(zhǔn)備圖像,再將數(shù)據(jù)復(fù)制到實際DC中
dcCompalible.Selec(Object(&biimap);
CRectrect;
GetCliemRecl(&reci);〃得到目的DC客戶區(qū)大小
BITMAPbmp;//BITMAP結(jié)構(gòu)休,用于保存位圖的信息
bitinap.GetBitmap(&bn甲);
〃將兼容DC中的位圖Copy到目標(biāo)DC中
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,
bmp.bmWidlh,bmp.bmHeighLSRCCOPY);
returntrue;}
修改主窗口的大小,在PreCreateWindow函數(shù)中添加:cs.cx=450;cs.cy=550;
5.1.4修改狀態(tài)欄:
使之只具有時間顯示窗格
首先MainFrame.cpp中修改indicators,如下:
staticLJINTindicators!]=
(
ID_SEPAR/XTOR,//statuslineindicator
IDS_TIMER.
};
同時,在資源視圖的StringTable中添加字符串資源:IDS_TIMERCaption
為:時間
然后,添加時鐘顯示功能:
1>在CMainFrame的OnCreate中添加代碼:
SetTimer(lJ000,NULL)來設(shè)置一個定時器
2>為CMainFrame添加WM.TIMER的峋應(yīng)函數(shù),代碼如下:
voidCMainFrame::OnTimer(UINTnIDEvent)
(
〃用于在狀態(tài)欄顯示當(dāng)前時間
CTimet=CTime::GetCurrentTime();
CStringstr=t.Fonnat("%H:%M:%S");
CClicntDCdc(this);
CSizesz=dc.GetTexiEx【eni(sir);〃得到Su?的長度,用于限制時間窗格
m_wndSta(usBar.SetPane!nfo(IJDS.TIMER^BPS.NORMAL.sz.cx);
m_wndStatusBar.SetPaneText(l,str),/將當(dāng)前時間顯示在時間窗格中
CFraineWnd::OnTimer(nIDEvent);)
5.1.5.變更應(yīng)用程序窗口標(biāo)題:
標(biāo)題改為"FTP客戶端”在CmyFtpApp的Initlnslance函數(shù)中添加代碼:
m_pMainWnd->SetWindowText(uFTP客戶端)
5.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))
5.2.1插入一個對話框:
界面如下:
對各控件進(jìn)行變量設(shè)置,如下圖所示:
ControlIDs:TypeMember
IDC_EDIT1CStringmFtpWebSite
IDC_EDIT2CStringm_UserName
IDC-EDIT3CStrinqmUserPwd
IDOK|
注:在IDC_EDIT3編輯框的Styles選項中,選中Password。
5.2.2新建一個類管理對話框:
在打開ClassWizard時,系統(tǒng)提示是否新建一個類管理對話框,選擇“是”,
類名為:CconnectDlg,基類為:CDialog
5.2.3CConnectDlg函數(shù):
對按鈕“連接”的鼠標(biāo)的點擊,進(jìn)行響應(yīng),函數(shù)如下:
voidCConnectDlg::OnConnect()
UpdateData();
CDialog::OnOK();
5.2.4.添加public成員變量:
首先在CMyFtpView.h中添加public成員變量:
CConnectDigm_ConDlg;〃管理連接對話框
CFtpDlgm-FtpDlg;〃管理CFtpDlg
CStringm_FtpWebSite;//保存Ftp服務(wù)器站點
Cstringm_UserName;〃保存用戶名
CStringm_UserPwd;//保存用戶密碼
CInternetSession*m_pSession;〃用于Internet連接
CFtpConnection*m_pConnection;〃用于建立Ftp連接
注:CFtpDlg為后建立的新類
并在構(gòu)造函數(shù)中初如化:
CMyFtpView;:CMyFtpView()
{
m.FtpWebSite=_T(',U);
m_UserName=_T("");
m.UserPwd=_T("");
m_pSession=NULL;
m_pConnection=NULL;
5.2.5修改CMyFtpVievv類的OnConnect函數(shù):
代碼如下:
voidCMyFtpView::OnConnect()
〃生成一個模態(tài)對話框
if(IDOK==m_ConDlg.DoModal())
m_pConnection=NULL;
m_pSession=NULL:
in_FtpWebSite=in_ConDlg.m_FtpWebSite;
m_UserName=m_ConDlg.m_UserName;
m_UscrPwd=m_ConDlg.m_UscrPwd;
m_pSession=newCInternetSession(AfxGe(AppName(),
1,
PRE_CONFIG_INTERNET_ACCESS);
try
〃試圖建立FTP連接
catch(CIntcrnctExccption*e)
{
〃錯誤處理
e->Delete();
m_pConnection=NULL;
}})
5.2.6添加響應(yīng)函數(shù):
為CMyFtpView類添加WM.TIMER消息的響應(yīng)函數(shù),代碼如下:
voidCMyF(pView::OnTimer(UINTnIDEvent)
(
staticinttimc_out=l;〃用于推斷是否超時
timc_out++;〃每秒增加一次
if(m_pConnection==NULL)
{
CStringstr=”正在連接中
((CMainFrame*)GetParent())->SetMessageText(str);〃在狀態(tài)欄中顯示,連接狀態(tài)
if(timc_out>=60)〃設(shè)置超時的時間為1分鐘
{
((CMainFrame*)GetParcnt())-〉SctMessageTcxt("連接超時!”);
KillTimer(l);〃關(guān)閉定時器
MessageBox("連接超時廣,“超時”.MB_OK);〃提示用戶
)
)
else〃假如連接成功,執(zhí)行如下
{
CStringstr=”連接成功!”;
((CMainFrame*)GetParen(())->SetMessageText(str);
KillTimer(l);
〃連接成功之后,不用定時器來監(jiān)視連接狀況
〃同時跳出操作對話框
//將FTP連接交給CFtpDlg
m_FtpDlg.m_pConnection=m_pConnection;
//創(chuàng)建非模態(tài)對話框CFtpDlg
m_FtpDlg.Create(IDD_DIALOG2,this);
m_FtpDlg.ShowWindow(SW_SHOW);
}
CView::OnTimer(nIDEvent);
5.3模塊三:FTP客戶端主要功能的實現(xiàn)(孟婕負(fù)責(zé))
5.3.1新插入一個對話框資源:
新插入一個對話框資源,界面如下:
己經(jīng)表上工2多哥■
上一級目錄下一級目錄
提
示.查詢
標(biāo)I
選
先
操
他
目
錄
塞下載文件上傳文件
共0
蒯除文件重命名文件
本設(shè)磔完整憾料:包括源程序、數(shù)據(jù)庫,
說明書,暴PPT等族系QQ:1415736481獲?。?/p>
專業(yè)定做其它設(shè)計
各控件變量信息如下圖所示:
ControlIDs:TypeMember
IDCDELETECButtonmBtnDelete
IDCDOWNLOADCButtonmBtnDownLoad
IDCEXIT
IDCLASTDIRECTORY
IDCLISTFILECListCtrlmFtpFile
IlDCNEXTDIRECTORY1
IDC_QUARYCButtonm_BtnQuery
IDCRENAMECButtonmBtnRename
IDC_UPLOADCButtonmBtnUpLoad
5.3.2建立新類CFtpDlg管理該對話框:
建立新類CFtpDlg管理該對話框,基類:CDialog
構(gòu)造函數(shù)代碼:
CFtpDlg::CFtpDlg(CWnd*pParent/*=NULL*/)
:CDialog(CFtpDlg::IDD,pParent)
(
m_pConnection=NULL;
m_pFileFind=NULL;
)
5.3.3初始化對話框:
1.為CFtpDIg添加WM_INITDIALOG響應(yīng)函數(shù)OnlnitDialog,代碼如
下:
BOOLCFtpDlg::OnInitDialog()
{
CDialog::OnInitDialog();
〃設(shè)置CListCtrl對象的屬性
m_FtpFile.SetExtendedStyle(LVS_EX_FULLROWSELECT|
LVS_IZX_GRIDLIN匚S);
〃設(shè)置列
m_FtpFile.InsertColumn(0,“文件名”,LVCFMT_CENTER,200);
m_FtpFile.InsertColumn(l,“日期”,LVCFMT_CENTER,100);
m_FtpFile.InsertColumn(2J字節(jié)數(shù)”,LVCFMT_CENTER,100);
〃初如化CftpFileFind類對象m_pFileFind
m_pFileFind=newCFtpFileFind(m_pConnection);
〃倜用OnQuary函數(shù)直詢FTP服務(wù)器當(dāng)前書目下的書目和文件信息
OnQuary();
returnTRUE;
)
5.3.4查詢函數(shù)OnQuary:
1.為查詢按紐添加BN_CLICKED響應(yīng)函數(shù)OnQuary,代碼如下:
voidCFtpDlg::OnQuary()
{ListContent("*");}
2.手動為CFtpDIg添加函數(shù)ListContent
聲明:voidListContent(LPCTSTR);
定義代碼:
〃用于顯示當(dāng)前書目下全部的子書目與文件
voidCFtpDIg::ListContent(LPCTSTRDirName)
bContinue=m_pFileFind->FindFile(DirName);
if(IbContinue)
〃查找完畢,失敗
m_pFileFind->Close();
m_pFileFind=NULL;
?
CStringstrFileName;
CStringstrFileTime;
CStringstrFileLength;
while(bContinue)
{
bContinue=m_pFileFind->FindNextFile();
strFileName=m_pFileFind->GetFileName();//得至ij文件名
〃得到文件最終一次修改的時間
FILETIMEft;
(
〃假如是書目不求大小,用vDIR>代替
strFileLength="<DIR>";
?
else
{
〃得到文件大小
if(m_pFileFind->GetLength64()<1024)
{
strFileLength.Format("%dB",m_pFileFind->GetLength64());
}
else
<
if(m_pFileFind->GetLength64()<(1024*1024))
strFileLength.Format("%3.3fKB",
(LONGLONG)m_pFileFind->GetLength64()/1024.0);
else
{
if(m_pFileFind->GetLength64()<(1024*1024*1024))
StrFileLength.Format("%3.3fMB",
(LONGLONG)m_pFileFind->GetLength64()/(1024*1024.0));
else
strFileLength.Format("%1.3fGB"Z
(LONGLONG)m_pFileFind->GetLength64()/(1024.0*1024*1024));
)
}
}
inti=0;
m_FtpFile.InsertItem(izstrFileName/O);
m_FtpFile.SetItemText(i,l/StrFileTime);
m_FtpFile.SetItemText(iz2zstrFileLength);
i++;
?
)
5.3.5下一級書目函數(shù)OnNextdirectory:
為〃下一級書目〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnNextdirectory,代
碼如下:
voidCFtpDlg::OnNextdirectory()
{
staticCStringstrCurrentDirectory,strSub;〃聲明2個靜態(tài)變量,
//strCurrentDirectory表示當(dāng)前書目名,strSub表示選定的文件名
〃首先得到當(dāng)前書FL保存在strCurrentDirectory
m_pConnection->GetCurrentDirectory(strCurrentDirectory);
strCurrentDirectory+="/";〃在當(dāng)前取得的書目名后添加
〃得到所選擇的文本,即所要進(jìn)入的下一級書目名
inti=m_FtpFile.GetNextItem(-lzLVNI_SELECTED);〃推斷文件是否選中
strSub=m_FtpFile.GetItemText(i,O);〃將選中的文件名保存至strSub
if(i==-l)
{
AfxMessageBox(“沒有選擇書目!。MB_OK|MBJCONQUESTION);
)
else
{〃推斷是不是書目
if(”vDIR>"!二m_FtpFile.GetItemText(i,2))〃顯示文件的第三列非vDIR>
<
AfxMessageBox("不是子書目!。MB_OK|MB_ICONSTOP);
?
else
{
〃設(shè)置當(dāng)前書目
m_pConnection->SetCurrentDirectory(strCurrentDirectory+strSub);
〃對當(dāng)前書目進(jìn)行查詢,更新ClistCtrl控件的內(nèi)容
ListContent("*");
}
)
?
5.3.6上一級書目函數(shù)OnLasttdirectory:
1.為〃上一級書目〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnLastdirectory,代碼如下:
〃返回上一級書目
voidCFtpDIg::OnLastdirectory()
{
staticCStringstrCurrentDirectory;〃聲明為靜態(tài)變最
m_pConnection->GetCurrentDirectory(strCurrentDirectory);
if(strCurrentDirectory==7")
{
AfxMessageBox(“已經(jīng)是根書目了!。MB_OK|MB_ICONSTOP);
}
else
{
〃調(diào)用函數(shù)GetLastDiretory,得到上一級書Fl名
GetLastDiretory(strCurrentDirectory);
〃設(shè)置當(dāng)前書目為上一級書目
m_pConnection->SetCurrentDirectory(strCurrentDirectory);
〃對當(dāng)前書目進(jìn)行查詢,更新ClistCtrl控件的內(nèi)容
ListContent("*");
?
2.為CFtpDIg類添加一工具函數(shù)GetLastDiretory用于得到上一級書目的名
稱
〃用于得到上一級書目的字符串表示
voidCFtpDIg::GetLastDiretory(CString&str)
{
intLastIndex=O;//定義一個初始整形變量
for(inti=0;i<str.GetLength();i++)〃定義i取得當(dāng)前地址字符串長度
<
if(str.GetAt⑴=='/')〃追溯至數(shù)組的最終一個、'/"
Lastindex=i;〃得到當(dāng)前的數(shù)值、、i〃
)
〃刪除最終一個7'之后的字符串
str=str.Left(LastIndex);〃自帶的left()函數(shù):返回參數(shù)前的全部字符串
if(Lastindex==0)〃當(dāng)追溯的本身即為根書目
str=7";
5.4模塊四:FTP客戶端部分功能的實現(xiàn):(李明負(fù)責(zé))
5.4.1下載函數(shù)OnDownLoad:
為〃下載〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnDownLoad,代碼如下:
voidCFtpDlg::OnDownload()
{
inti=m_FtpFile.GetNextItem(-lzLVNI_SELECTED);
〃先推斷是否已經(jīng)選中文件
if(i==?l)〃假如沒有被選中
{〃彈出對話框提示沒有選擇文件
AfxMessageBox("沒有選擇文件!,MB_OK|MBJCONQUESTION);
)
else
<
〃假如選中了文件,則得到選擇項的類型,推斷是不是文件
CStringstrType=m_FtpFile.GetItemText(i,2);
if(strType!="<DIR>")〃選擇的是文件
{
CStringstrDestName;〃下載后的文件名
CStringstrSourceName;〃原文件名
〃得到所要下載的文件名
strSourceName=m_FtpFile.GetItemlext(i/O);
CFileDialogdlg(rALSE,""zstrSourceName);
〃彈出SAVEAS對話框
if(dlg.DoModal()==IDOK)
{
〃獲得下載文件在本地機(jī)上存儲的路徑和名稱
strDestName=dlg.GetPathName();
〃調(diào)用CFtpConnect類中的GetFile函數(shù)下載文件
if(m_pConnection->GetFile(strSourceNamezstrDestName))
AfxMessageBox(”下載成功!"ZMB_OK|MB_ICONINFORMATION);
else
AfxMessageBox("下載失敗!"ZMB_OK|MB_ICONSTOP);
)
)
else
{
〃選擇的是書目
AfxMessageBox("不能下載書目!\n請重選!。MB_OK|MB_ICONSTOP);
}
)
)
5.4.2上傳函數(shù)OnUpLoad:
為〃上傳〃按紐添加BN.CLICKED響應(yīng)函數(shù)OnUpload,代碼如下:
voidCFtpDlg::OnUpload()
〃獲得當(dāng)前輸入
CStringstrSourceName;〃原文件名
CStringstrDestName;
,,,,,
CFileDialogdlg(TRUE,,
if(dlg.DoModal()==IDOK)
{
〃獲得待上傳的本地機(jī)文件路徑和文件名
strSourceName=dlg.GetPathName();
strDestName=dlg.GetFileName();
〃調(diào)用CFtpConnect類中的PutFile函數(shù)上傳文件
if(m_pConnection->PutFile(strSourceName/strDestName))
AfxMessageBox("上傳成功!=MB_OK|MB」CONINFORMATION);
else
AfxMessageBox("上傳失??!"ZMB_OK|MB_ICONSTOP);
)
〃更新ClistCtrl的內(nèi)容
OnQuary();
}
本設(shè)磔完整腺料:包括源程序、數(shù)據(jù)庫,
說明書,揖*PPT等族系QQ:1415736481獲?。?/p>
專業(yè)定做其它設(shè)計
5.4.3刪除函數(shù)OnDelete:
為〃刪除〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnDelete,代碼如下:
〃刪除選擇的文件
voidCFtpDlg::OnDelete()
{
inti=m_FtpFile.GetNextItem(-l/LVNI_SELECTED);
if(i==-l)
{
AfxMessageBox("沒有選擇文件!”,MB_OK|MBJCONQUESTION);
)
else
{
CStringstrFileName;
strFileName=m_FtpFile.GetItemText(izO);
if("<DIR>"==m_FtpFile.GetItemText(i,2))
{
AfxMessageBox("不能刪除書目!。MB_OK|MB_ICONSTOP);
}
else
{
if(m_pConnection->Remove(strFileName))
AfxMessageBox("冊ij除成功!”,MB_OK|MB」CONINFORMATION);
else
AfxMessageBox(''無法刪除!LMBJDKIMBJCONSTOP);
}
?
OnQuary();
}
5.4.4重命名函數(shù)OnRename:
1、新插入一個對話框資源,界面如下:
控件變量信息如下圖所示:
ControlIDs:TypeMember
IDCEDIT1CStrinqmNewFileName
IDCANCEL
IDOK
本設(shè)磔完整懶料:包括源程序、數(shù)據(jù)庫,
說明書,毒即PT等族系QQ:1415736481獲??!
專業(yè)定做其它設(shè)計
2、改
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤層氣增產(chǎn)作業(yè)工操作規(guī)范水平考核試卷含答案
- 涂裝工崗前理論知識考核試卷含答案
- 非織造布調(diào)漿工安全培訓(xùn)強(qiáng)化考核試卷含答案
- 鼓類樂器制作工復(fù)測強(qiáng)化考核試卷含答案
- 危險廢物處理工操作測試考核試卷含答案
- 水生植物疫病檢疫員崗前可持續(xù)發(fā)展考核試卷含答案
- 房產(chǎn)局的合同范本
- 房子修善合同范本
- 投資劇目合同范本
- 防火閘門合同范本
- 宏觀經(jīng)濟(jì)學(xué)PPT完整全套教學(xué)課件
- 2023年上海清算登記托管結(jié)算試題試題
- 動車組受電弓故障分析及改進(jìn)探討
- 初中語文-孝教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 石大數(shù)學(xué)史概論課件
- 2023年浙江省大學(xué)生物理競賽試卷
- 初中數(shù)學(xué)滬科版九年級上冊第23章 解直角三角形2 解直角三角形及其應(yīng)用(f)
- GB/T 2007.1-1987散裝礦產(chǎn)品取樣、制樣通則手工取樣方法
- GB/T 18226-2015公路交通工程鋼構(gòu)件防腐技術(shù)條件
- 醫(yī)療美容護(hù)理、院感質(zhì)控細(xì)則
- 暴發(fā)疫情現(xiàn)場調(diào)查處置課件
評論
0/150
提交評論