FTP客户端的设计
WNLOAD
下载
命令按钮button
IDC_UPLOAD
上传
命令按钮button
IDCANCLE
退出
列表框listbox
IDC_LIST_FILE
(sort不选)
3.定义控件的成员变量
按照表3.12,用类向导(Class Wizard)为对话框中的控件对象定义相应的成员变量。
}
5.为对话框中的控件对象添加事件响应函数
按照表3.13,用类向导(Class Wizard )为对话框中的控件对象添加事件响应函数。
表3.13对话框控件的事件响应函数
控件类型
对象标识ObjectID
消息Message
函数Member functions
命令按钮
IDOK
BN_CLICKED
OnQuery
{
//禁用用来输入的文本框控件
m_editFtp.EnableWindow(FALSE); //服务器域名输入文本框
m_editName.EnableWindow(FALSE); //登录用户名输入文本框
m_editPwd.EnableWindow(FALSE); //口令输入文本框
m_staFtp.EnableWindow(FALSE);
pConnection=NULL; //初始化
pFileFind=NULL;
首先输入服务器域名“localhost”,登录用户名和口令,然后点击查询按钮:
如图表示登陆成功后,查询到目录下的文件。
//查询以后,当用户在列表框中选择了一个文件时,执行此函数。
void CFtpDlg::OnSelchangeListFile()
m_staName.EnableWindow(FALSE);
m_staPwd.EnableWindow(FALSE);
//禁用查询和上传按钮
m_btnUpload.EnableWindow(FALSE); //上传按钮
m_btnQuery.EnableWindow(FALSE); //查询按钮
//激活下载按钮
客户端程序提示“上传成功!”
实验总结
在本次实验过程中,通过上机基本掌握了winlnet类的编程,学会使用MFC WinInet类编程程序;学会使用MFC类向导添加事件处理函数和成员变量。
指导教师意见
签名:年月日
实验仪器
VC++ 6.0
实验内容
1.使用MFC AppWizard创建应用程序框架
工程名是Ftp,应用程序的类型是基于对话框的,其它部分接受系统的默认设置就可以。应用程序包括两个类:
应用程序类:CFtpApp,对应的文件是Ftp.h和Ftp.cpp。
对话框类:CFtpDlg,对应的文件是FtpDlg.h和FtpDlg.cpp。
表3.12控件对象的成员变量
控件ID
Control IDs
变量名称
Member Variable Name
变量类别
Category
变量类型
Variable Type
IDC_STATIC_FTP
m_staFtp
Control
CStatic
IDC_STATIC_NAME
m_staName
Control
CStatic
{
CInternetSession* pSession; //定义会话对象指针变量
CFtpConnection* pConnection; //定义连接对象指针变量
CFtpFileFind* pFileFind; //定义文件查询对象指针变量
CString strFileName;
BOOL bContinue;
贵州大学实验报告
学院:计算机科学与技术专业:XXX班级:XXX
姓名
XXX
学号
XXX
实验组
实验时间
2015、5、11
指导教师
XXX
成绩
实验项目名称
FTP客户端的设计
实验目的
1.学会使用MFC WinInet类编程程序;
2.学会使用MFC类向导添加事件处理函数和成员变量。
实验要求
程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登录客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。
//当用户点击“上传”按钮时,执行此函数
void CFtpDlg::OnUpload()
{
//获得当前输入
UpdateData(TRUE);
//禁用用于输入的文本框控件
m_editFtp.EnableWindow(FALSE); //服务器域名输入文本框
m_editName.EnableWindow(FALSE); //登录客户名输入文本框
BOOL CFtpDlg:: Upload (CString strSName, CString strDName);
分别用于文件的下载和上传。
7.手工添加包含语句
在CFtpDlg类的FtpDlg.cpp文件中添加对于Afxinet.h的包含命令,来获得对于MFC WinInet类的支持。
8.添加事件函数和成员函数的代码
m_listFile
Control
CListBox
4.添加成员变量的初始化代码
在FtpDlg.cpp文件的OnInitDialog()函数中添加成员变量的初始化代码。对服务器名,登录用户名,登录口令的控件变量赋初值。
BOOL CFtpDlg::OnInitDialog()
{
................. //前面是MFC应用程序向导和类向导自动生成的代码
静态文本static text
IDC_STATIC_PWD
登录口令
静态文本static text
IDC_STATIC_FILE
目录文件列表
编辑框edit box
IDC_EDIT_FTP
编辑框edit box
IDC_EDIT_NAME
编辑框edit box
IDC_EDIT_PWD
命令按钮button
IDOK
2.为对话框添加控件
在程序的主对话框界面中按照图3-11添加相应的可视控件对象,并按照表3.11修改控件的属性。
表3.11对话框中的控件属性
控件类型
控件ID
Caption
静态文本static text
IDC_STATIC_FTP
服务器域名
静态文本static text
IDC_STATIC_NAME
用户登录名
m_editPwd.EnableWindow(FALSE); //口令输入文本框
m_staFtp.EnableWindow(FALSE);
m_staName.EnableWindow(FALSE);
m_staPwd.EnableWindow(FALSE);
点击“上传”按钮,在弹出的对话框中选择要上传的文件,然后点击“打开”:
实验数据
界面实现
编译源程序,通过后运行程序对程序的基本界面进行测试,结果图如下:
1查询并显示FTP服务器的当前目录内容
当用户输入了服务器名、登录用户名和口令后,点击‘查询’按钮,会产生BN_CLICKED事件,导致执行对应的函数OnQuery()。代码如下:
void CFtpDlg::OnQuery()
m_btnDownload.EnableWindow(TRUE);
}
//当用户点击“下载”按钮时,执行此函数
void CFtpDlg::OnDownload()
{
//获得当前输入
在查询完成后,在列表框中选择要下载的文件,点击“下载”按钮:
在弹出的对话框中选择下载位置,并重命名下载文件,点击保存。如下图,表示下载成功:
// TODO: Add extra initialization here
m_strFtp=_T(""); //初始化服务器域名
m_strName=_T(""); //初始化登录用户名
m_strPwd=_T(""); //初始化登录口令
UpdateData(FALSE); //更新界面
return TRUE; // return TRUE unless you set the focus to a control
m_strPwd
Value
CString
m_editPwd
Control
CEdit
IDOK
m_btnQuery
Control
CBotton
IDC_DOWNLOAD
m_btnDownload
Control
CBotton
IDC_UPLOAD
m_btnUpload
Control
CBotton
IDC_LIST_FILE
IDC_STATIC_PWD
m_staPwd
Control
CStatic
IDC_EDIT_FTP
m_strFtp
Value
CString
m_editFtp
Control
CEdit
IDC_EDIT_NAME
m_strName
Value
CString
m_editName
Control
CEdit
IDC_EDIT_PWD
命令按钮
IDC_DOWNLOAD
BN_CLICKED
OnDownload
命令按钮
IDC_UPLOAD
BN_CLICKED
OnUpload
列表框
IDC_LIST_FILE
LBN_SELCHANGE