?? mainfrm.cpp
字號:
::Sleep(10);
InternetCloseHandle(InternetSession);
return 0L;
}
outinfo="成功連上";
outinfo+=szFtpName;
outinfo+="服務器,現在進入";
outinfo+=Ftpdirectory;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
FtpSetCurrentDirectory(hFtpConn,Ftpdirectory);
OldFtp=Ftpdirectory;
for(int i=0;i<nCount;i++)
{
strFtp=OldFtp;
CString DirName=fileInfo[i].fileName;
if(fileInfo[i].ufileFlag==FILEICON)
{
outinfo="正在刪除";
outinfo+=DirName;
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
if(FtpDeleteFile(hFtpConn,DirName))
{
continue;
}
else
{
outinfo="刪除";
outinfo+=DirName;
outinfo+="出錯,返回";
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
break;
}
}
else
{
if(strFtp.Right(1)=='/')
strFtp+=DirName;
else
strFtp+="/"+DirName;
if(Result=CFtp_Beforedeletefile(InternetSession,strFtp,OldFtp))
continue;
else
{
AfxMessageBox("刪除出錯,請查明原因");
break;
}
}
}
outinfo="文件刪除結束";
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
::Sleep(10);
if(IsFree)
::SendMessage(pServView->m_hWnd,WM_REDISPLAYFILE,(WPARAM)(LPCTSTR)OldFtp,0);
delete[] fileInfo;
InternetCloseHandle(hFtpConn);
InternetCloseHandle(InternetSession);
return 0L;
}
UINT CFtpThread::CFtp_Rename(LPVOID lParam)
{
CString outinfo;
CFtpParaClass::FILE_CHANGE_INFO* fileInfo=(CFtpParaClass::FILE_CHANGE_INFO*)lParam;
HINTERNET InternetSession=InternetOpen(szAppName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
outinfo="正在連接";
outinfo+=szFtpName;
outinfo+="服務器";
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
HINTERNET hFtpConn=InternetConnect(InternetSession,szFtpName,nPort,
szFtpUser,szFtpPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if(!hFtpConn)
{
outinfo="未連上";
outinfo+=szFtpName;
outinfo+="服務器,請查明原因,目前只能返回";
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
InternetCloseHandle(InternetSession);
::Sleep(10);
return 0L;
}
outinfo=szFtpName;
outinfo+="服務器連接成功,現進行改名操作";
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
FtpSetCurrentDirectory(hFtpConn,Ftpdirectory);
outinfo="正在把";
outinfo+=fileInfo->OldName;
outinfo+="改為";
outinfo+=fileInfo->NewName;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
FtpRenameFile(hFtpConn,fileInfo->OldName,fileInfo->NewName);
outinfo="改名成功";
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
::Sleep(10);
delete fileInfo;
InternetCloseHandle(hFtpConn);
InternetCloseHandle(InternetSession);
return 0L;
}
BOOL CFtpThread::CFtp_Beforedeletefile(HINTERNET InternetSession, CString& strFtp,CString& OldDir)
{
CString outinfo;
BOOL result;
DWORD dwSize=MAX_PATH;
CString tFile;
WIN32_FIND_DATA findData;
HINTERNET hFind;
HINTERNET hFtpConn=InternetConnect(InternetSession,szFtpName,nPort,szFtpUser,szFtpPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if(!hFtpConn)
{
AfxMessageBox("建立聯接出錯,返回");
InternetCloseHandle(InternetSession);
return FALSE;
}
outinfo="正在進入";
outinfo+=strFtp;
outinfo+="目錄";
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
FtpSetCurrentDirectory(hFtpConn,strFtp);
outinfo="進入";
outinfo+=strFtp;
outinfo+="目錄成功";
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
if(!(hFind=FtpFindFirstFile(hFtpConn,_T("*"),&findData,0,0)))
{
if (GetLastError()!= ERROR_NO_MORE_FILES)
result=FALSE;
else
result=TRUE;
goto end;
}
do
{
tFile=findData.cFileName;
if(tFile=="."||tFile=="..")continue;
if(findData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
if(!(result=CFtp_Beforedeletefile(InternetSession,strFtp+"/"+tFile,strFtp)))
{
AfxMessageBox("刪除出錯,返回");
break;
}
}
else
{
outinfo="正在刪除";
outinfo+=tFile;
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
result=(FtpDeleteFile(hFtpConn,tFile))?TRUE:FALSE;
if(!result)
{
outinfo="刪除"+tFile+"出錯";
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
break;
}
}
}while(InternetFindNextFile(hFind,&findData));
FtpSetCurrentDirectory(hFtpConn,OldDir);
outinfo="正在刪除"+strFtp+"目錄";
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
FtpRemoveDirectory(hFtpConn,strFtp);
InternetCloseHandle(hFind);
InternetCloseHandle(hFtpConn);
return result;
end:
InternetCloseHandle(hFtpConn);
return result;
}
BOOL CFtpThread::CFtp_Beforereceivefile(HINTERNET InternetSession, CString& str,CString& strFtp,LPVOID pInf)
{
CFtpParaClass:: FILE_FTP_INFO* fileInfo=(CFtpParaClass:: FILE_FTP_INFO*)pInf;
BOOL result;
UINT Size_t;
DWORD dwSize=MAX_PATH;
HANDLE m_phandle;
LPSTR bufferss;
CString ftpbuffer,tFile;
WIN32_FIND_DATA findData;
HINTERNET hFind;
HINTERNET hFtpConn=InternetConnect(InternetSession,szFtpName,nPort,szFtpUser,szFtpPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if(!hFtpConn)
{
AfxMessageBox("建立聯接出錯,返回");
InternetCloseHandle(InternetSession);
return FALSE;
}
Size_t=(GetCurrentDirectory(0,NULL)*sizeof(TCHAR));
m_phandle=GetProcessHeap();
bufferss=(LPSTR)HeapAlloc(m_phandle,HEAP_ZERO_MEMORY,Size_t);
GetCurrentDirectory(Size_t,bufferss);
FtpSetCurrentDirectory(hFtpConn,strFtp);
::CreateDirectory(str,NULL);
::SetCurrentDirectory(str);
::SendMessage(pLocView->m_hWnd,WM_SETDIR,0,(LPARAM)(LPCTSTR)str);
if(!(hFind=FtpFindFirstFile(hFtpConn,_T("*"),&findData,0,0)))
{
if (GetLastError()!= ERROR_NO_MORE_FILES)
result=FALSE;
else
result=TRUE;
goto end;
}
do
{
tFile=findData.cFileName;
if(tFile=="."||tFile==".."||findData.dwFileAttributes==FILE_ATTRIBUTE_HIDDEN)continue;
if(findData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
if(!(result=CFtp_Beforereceivefile(InternetSession,str+"\\"+tFile,strFtp+"/"+tFile,pInf)))
{
AfxMessageBox("文件發送出錯,返回");
break;
}
}
else
{
result=(FtpGetFile(hFtpConn,tFile,tFile,FALSE,FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_BINARY|
INTERNET_FLAG_NO_CACHE_WRITE,0))?TRUE:FALSE;
if(!result)
{
AfxMessageBox("文件發送出錯,返回");
break;
}
if(IsFree)
{
IsFree=FALSE;
strcpy(fileInfo->szFileName,tFile);
strcpy(fileInfo->szFileDate,"");
strcpy(fileInfo->szFileSize,"");
fileInfo->nType=FILEICON;
::PostMessage(pLocView->m_hWnd,WM_SETFILE,(WPARAM)fileInfo,SERVFILE);
}
}
}while(InternetFindNextFile(hFind,&findData));
SetCurrentDirectory(bufferss);
::SendMessage(pLocView->m_hWnd,WM_SETDIR,0,(LPARAM)bufferss);
InternetCloseHandle(hFind);
HeapFree(m_phandle,HEAP_NO_SERIALIZE,bufferss);
InternetCloseHandle(hFtpConn);
return result;
end:
::SetCurrentDirectory(bufferss);
::SendMessage(pLocView->m_hWnd,WM_SETDIR,0,(LPARAM)bufferss);
HeapFree(m_phandle,HEAP_NO_SERIALIZE,bufferss);
InternetCloseHandle(hFtpConn);
return result;
}
void CLocFileView::OnDblclkLocFile(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVDISPINFO* pLocInfo=(NMLVDISPINFO*)pNMHDR;
CString str,buf;
int iIcon,iIconSel;
str.Format("%d",pLocInfo->item);
if(str=="-1")
return;
int nItem=atoi(str);
DWORD dwFlag=m_ctLocFile.GetItemData(nItem);
if(dwFlag==FILEICON)
{
OnLocFileOpen();
return;
}
::GetCurrentDirectory(MAX_PATH,Localdirectory);
str=Localdirectory;
m_ctLocFile.GetItemText(nItem,0,Localdirectory,MAX_PATH);
buf=Localdirectory;
if(str.Right(1)!="\\")
str+="\\";
str+=Localdirectory;
GetFileIcon(buf,&iIcon,&iIconSel);
int i=InsertLocDir(str,iIcon,iIconSel);
m_ctLocDir.SetCurSel(i);
::SetCurrentDirectory(str);
::GetCurrentDirectory(MAX_PATH,Localdirectory);
BeginFindLocFile();
*pResult = 0;
}
void CLocFileView::OnSize(UINT nType, int cx, int cy)
{
// CFormView::OnSize(nType, cx, cy);
CRect rc;
CRect r1,r3;
GetClientRect(rc);
r1.top=rc.top;
r1.left=rc.left+1;
r1.bottom=25;
r1.right=rc.right-1;
r3.top=r1.bottom+1;
r3.left=rc.left+1;
r3.right=rc.right-1;
r3.bottom=rc.bottom-1;
if(m_ctLocDir.m_hWnd)
//m_ctLocDir.SetWindowPos(this,0,0,cx,0,SWP_NOZORDER|SWP_NOMOVE);
m_ctLocDir.MoveWindow(r1);
if(m_ctLocFile.m_hWnd)
{
// m_ctLocFile.ShowWindow(SW_HIDE);
// m_ctLocFile.SetWindowPos(this,0,0,cx,cy-25,SWP_NOZORDER|SWP_NOMOVE);
// m_ctLocFile.ShowWindow(SW_SHOW);
m_ctLocFile.MoveWindow(r3);
}
}
void CServFileView::OnSize(UINT nType, int cx, int cy)
{
// CFormView::OnSize(nType, cx, cy);
if(m_ctServDir.m_hWnd&&m_ctBack.m_hWnd)
{
m_ctServDir.SetWindowPos(this,0,0,cx-30,0,SWP_NOZORDER|SWP_NOMOVE);
m_ctBack.SetWindowPos(this,cx-28,0,0,0,SWP_NOZORDER|SWP_NOSIZE);
}
if(m_ctServFile.m_hWnd)
{
m_ctServFile.ShowWindow(SW_HIDE);
m_ctServFile.SetWindowPos(this,0,0,cx,cy-25,SWP_NOZORDER|SWP_NOMOVE);
m_ctServFile.ShowWindow(SW_SHOW);
}
}
BOOL CServFileView::SetServImageList(UINT nBitmapID)
{
if(m_ctServImageList.Create(nBitmapID,16,1,RGB(0,255,0)))
m_ctServFile.SetImageList(&m_ctServImageList,LVSIL_SMALL);
else
return FALSE;
return TRUE;
}
void CLocFileView::OnSelchangeLocDir()
{
CString str;
char bufferss[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,bufferss);
int i=m_ctLocDir.GetCurSel();
m_ctLocDir.GetLBText(i,(LPTSTR)(LPCTSTR)str);
i=0;
while(1)
{
if(!SetCurrentDirectory(str))
{
i++;
if(i<2)
{
AfxMessageBox("請插入磁盤再試");
continue;
}
str=bufferss;
if((i=m_ctLocDir.FindStringExact(-1,str))!=-1)
m_ctLocDir.SetCurSel(i);
else
m_ctLocDir.SetWindowText(str);
}
else
{
::SetCurrentDirectory(str);
GetLocCurrentDirectory();
BeginFindLocFile();
}
break;
}
}
void CLocFileView::OnDropdownLocDir()
{
int i=m_ctLocDir.GetCount();
for(;i>m_iDirCount-1;--i)
m_ctLocDir.DeleteItem(i);
}
void CServFileView::OnDblclkServFile(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVDISPINFO* pLocInfo=(NMLVDISPINFO*)pNMHDR;
CString str,buf;
str.Format("%d",pLocInfo->item);
if(str=="-1")
return;
int nItem=atoi(str);
DWORD dwFlag=m_ctServFile.GetItemData(nItem);
if(dwFlag==FILEICON)
return;
m_ctServDir.GetWindowText(str);
if(str!="/")
str+="/";
str+=m_ctServFile.GetItemText(nItem,0);
m_ctServDir.SetWindowText(str);
m_ctServDir.Invalidate();
::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd,WM_COMMAND,IDC_QUICKCONNECT,0);
*pResult = 0;
}
void CLocFileView::OnBegindragLocFile(NMHDR* pNMHDR, LRESULT* pResult)
{
if(m_bDragging)return;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
int nItem=pNMListView->iItem;
POINT pt=pNMListView->ptAction;
m_pDragImageList=m_ctLocFile.CreateDragImage(nItem,&pt);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -