首先在CMyFtpView.h中添加public成员变量:
CConnectDlg m_ConDlg; //管理连接对话框
CFtpDlg m_FtpDlg; //管理CFtpDlg
CString m_FtpWebSite; //保存Ftp服务器站点
Cstring m_UserName; //保存用户名
CString m_UserPwd; //保存用户密码
CInternetSession* m_pSession; //用于Internet连接
CFtpConnection* m_pConnection; //用于建立Ftp连接
注: CFtpDlg为后建立的新类
并在构造函数中初如化:
CMyFtpView::CMyFtpView()
{
m_FtpWebSite = _T("");
m_UserName = _T("");
m_UserPwd = _T("");
m_pSession = NULL;
m_pConnection = NULL;
}
5.2.5 修改 CMyFtpView类的OnConnect函数:
代码如下:
void CMyFtpView::OnConnect()
{
//生成一个模态对话框
if (IDOK==m_ConDlg.DoModal())
{
m_pConnection = NULL;
m_pSession = NULL;
m_FtpWebSite = m_ConDlg.m_FtpWebSite;
m_UserName = m_ConDlg.m_UserName;
m_UserPwd = m_ConDlg.m_UserPwd;
m_pSession=new CInternetSession(AfxGetAppName(),
1,
PRE_CONFIG_INTERNET_ACCESS);
try
{
//试图建立FTP连接
SetTimer(1,1000,NULL); //设置定时器,一秒发一次WM_TIMER
CString str="正在连接中....";
((CMainFrame*)GetParent())->SetMessageText(str);
m_pConnection=m_pSession->GetFtpConnection(m_FtpWebSite,
m_UserName,m_UserPwd);
}
catch (CInternetException* e)
{
//错误处理
e->Delete();
m_pConnection=NULL;
}}}
5.2.6 添加响应函数:
为CMyFtpView类添加WM_TIMER消息的响应函数,代码如下:
void CMyFtpView::OnTimer(UINT nIDEvent)
{
static int time_out=1; //用于判断是否超时
time_out++; //每秒增加一次
if (m_pConnection == NULL)
{
CString str="正在连接中....";
((CMainFrame*)GetParent())->SetMessageText(str); //在状态栏中显示,连接状态
if (time_out>=60) //设置超时的时间为1分钟
{
((CMainFrame*)GetParent())->SetMessageText("连接超时!");
KillTimer(1); //关闭定时器
MessageBox("连接超时!","超时",MB_OK); //提醒用户
}
}
else //如果连接成功,执行如下
{
CString str="连接成功!";
((CMainFrame*)GetParent())->SetMessageText(str);
KillTimer(1);
//连接成功之后,不用定时器来监视连接情况
//同时跳出操作对话框
//将FTP连接交给CFtpDlg
m_FtpDlg.m_pConnection = m_pConnection;
//创建非模态对话框CFtpDlg
m_FtpDlg.Create(IDD_DIALOG2,this);
m_FtpDlg.ShowWindow(SW_SHOW);
}
CView::OnTimer(nIDEvent);
}
5.3 模块三: FTP客户端主要功能的实现 ( 孟婕 负责)
5.3.1 新插入一个对话框资源:
新插入一个对话框资源,界面如下:
各控件变量信息如下图所示:
5.3.2 建立新类CFtpDlg管理该对话框:
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页