//调用OnQuary函数查询FTP服务器当前目录下的目录和文件信息
OnQuary();
return TRUE;
}
5.3.4 查询函数OnQuary:
1.为查询按纽添加BN_CLICKED响应函数OnQuary,代码如下:
void CFtpDlg::OnQuary()
{ ListContent("*"); }
2.手动为CFtpDlg添加函数ListContent
声明: void ListContent(LPCTSTR );
定义代码:
//用于显示当前目录下所有的子目录与文件
void CFtpDlg::ListContent(LPCTSTR DirName)
{
m_FtpFile.DeleteAllItems();
BOOL bContinue;
bContinue=m_pFileFind->FindFile(DirName);
if (!bContinue)
{
//查找完毕,失败
m_pFileFind->Close();
m_pFileFind=NULL;
}
CString strFileName;
CString strFileTime;
CString strFileLength;
while (bContinue)
{
bContinue = m_pFileFind->FindNextFile();
strFileName = m_pFileFind->GetFileName(); //得到文件名
//得到文件最后一次修改的时间
FILETIME ft;
m_pFileFind->GetLastWriteTime(&ft);
CTime FileTime(ft);
strFileTime = FileTime.Format("%y/%m/%d");
if (m_pFileFind->IsDirectory())
{
//如果是目录不求大小,用<DIR>代替
strFileLength = "<DIR>";
}
else
{
//得到文件大小
if (m_pFileFind->GetLength64() <1024)
{
strFileLength.Format("%d B",m_pFileFind->GetLength64());
}
else
{
if (m_pFileFind->GetLength64() < (1024*1024))
strFileLength.Format("%3.3f KB",
(LONGLONG)m_pFileFind->GetLength64()/1024.0);
else
{
if (m_pFileFind->GetLength64()<(1024*1024*1024))
strFileLength.Format("%3.3f MB", (LONGLONG)m_pFileFind->GetLength64()/(1024*1024.0));
else
strFileLength.Format("%1.3f GB", (LONGLONG)m_pFileFind->GetLength64()/(1024.0*1024*1024));
}
}
}
int i=0;
m_FtpFile.InsertItem(i,strFileName,0);
m_FtpFile.SetItemText(i,1,strFileTime);
m_FtpFile.SetItemText(i,2,strFileLength);
i++;
}
}
5.3.5 下一级目录函数OnNextdirectory:
为”下一级目录”按纽添加BN_CLICKED响应函数OnNextdirectory,代码如下:
void CFtpDlg::OnNextdirectory()
{
static CString strCurrentDirectory, strSub; //声明2个静态变量,
// strCurrentDirectory表示当前目录名,strSub表示选定的文件名
//首先得到当前目录,保存在strCurrentDirectory
m_pConnection->GetCurrentDirectory(strCurrentDirectory);
strCurrentDirectory+="/"; //在当前取得的目录名后添加“/”
//得到所选择的文本,即所要进入的下一级目录名
int i=m_FtpFile.GetNextItem(-1,LVNI_SELECTED); //判断文件是否选中
strSub = m_FtpFile.GetItemText(i,0);//将选中的文件名保存至strSub
if (i==-1)
{
AfxMessageBox("没有选择目录!",MB_OK | MB_ICONQUESTION);
}
else
{ //判断是不是目录
if ("<DIR>"!=m_FtpFile.GetItemText(i,2))//显示文件的第三列非<DIR>
{
AfxMessageBox("不是子目录!",MB_OK | MB_ICONSTOP);
}
else
{
//设置当前目录
m_pConnection->SetCurrentDirectory(strCurrentDirectory+strSub);
//对当前目录进行查询,更新ClistCtrl控件的内容
ListContent("*");
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页