- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.4 MFC WinInet类应用程序编程实例
在因特网上有很多FTP服务器,他们存有丰富的软件和信息资源,至今仍然是因特网提供的主要服务之一。现在也有很多FTP客户端软件,比如CuteFtp程序等,本小节就通过一个使用MFC WinInet类编制的FTP客户端程序的例子,说明MFC WinInet应用程序的编程方法。
6.4.1 程序要实现的功能
程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登录客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。
应用程序的类型是基于对话框的,主对话框用户界面如图6.10所示:
图6.10 Ftp客户端程序的主对话框
三个文本编辑框,分别用于输入FTP服务器域名,登录用户名和登录口令。一个列表框,用来显示FTP服务器当前目录的内容,并允许用户从中选择文件下载。四个命令按钮分别执行查询、上传、下载和退出的功能。
用户执行程序的流程是:
进行各种操作之前,应首先输入服务器域名,登录用户名和口令。
如果要进行查询,可以点击‘查询’按钮,调用OnQuery函数。该函数获得用户当前输入的服务器名、登录用户名和口令等信息,清除列表框的内容;然号创建Internet会话类对象,进行服务器的登录,试图建立与指定FTP服务器的连接;如果连接成功,就创建CFtpFileFind文件检索类对象,查找服务器上当前目录的任意文件,找到了第一个文件后,继续找其它的文件,并将找到的文件或目录名显示在列表框中。所有文件找到后,结束查询,并依次删除文件查询对象、FTP连接对象和Internet 会话对象,结束会话。
此时,可以从服务器下载文件。从列表框中选择一个文件,会产生LBN_SELCHANGE事件,自动调用相应的OnSelchangeListFile函数,禁用用来输入的文本框控件,禁用查询和上传按钮,激活下载按钮。此时,用户可以点击‘下载’按钮,产生BN_CLICKED事件,自动调用OnDownload函数,调用Download函数,下载该文件。下载完毕,禁用下载按钮,激活查询和上传按钮,激活用来输入的文本框控件。而Download函数重新创建Internet会话,建立FTP连接,下载文件后,将会话对象和连接对象清除。
如果要向FTP服务器上传文件,点击“上传“按钮,产生BN_CLICKED事件,调用OnUpload函数,该函数获得当前输入的服务器名、登录用户名和口令,禁用用于输入的文本框控件,禁用查询按钮,禁用用于输入的文本框控件,弹出小对话框,获得待上传的本地机文件路径和文件名,调用Upload函数上传文件。上传完毕,激活查询按钮,激活用于输入的文本和编辑控件。Upload函数也重新创建Internet会话,建立FTP连接,上传文件后,然后清除会话对象和连接对象。
可见,此程序的查询、下载和上传功能基本是独立的。每次都要创建会话,建立连接,执行操作,然后清除对象。这时为了简单清楚起见而这样做的。
此程序的主要的技术要点是:
如何创建一个Internet会话,即创建CInternetSession对象;如何建立与FTP服务器的连接,即创建CFtpConnection对象;如果连接成功,如何获得当前登录的目录下的文件和目录名称,即检索一个目录下的文件,并显示文件信息;如何下载文件、上传文件以及关闭连接。
6.4.2 创建应用程序的过程
1.使用MFC AppWizard创建应用程序框架
工程名是Ftp,应用程序的类型是基于对话框的,其它部分接受系统的默认设置就可以。应用程序包括两个类:
应用程序类:CFtpApp,对应的文件是Ftp.h和Ftp.cpp。
对话框类:CFtpDlg,对应的文件是FtpDlg.h和FtpDlg.cpp。
2.为对话框添加控件
在程序的主对话框界面中按照图6-13添加相应的可视控件对象,并按照表6.13修改控件的属性。
表6.13 对话框中的控件属性
控件类型
控件ID
Caption
静态文本 static text
IDC_STATIC_FTP
服务器域名
静态文本 static text
IDC_STATIC_NAME
用户登录名
静态文本 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
查询
命令按钮 button
IDC_DOWNLOAD
下载
命令按钮 button
IDC_UPLOAD
文档评论(0)