《Visual C++ NET案例设计教程》-学习情境八  网络编程_第1页
《Visual C++ NET案例设计教程》-学习情境八  网络编程_第2页
《Visual C++ NET案例设计教程》-学习情境八  网络编程_第3页
《Visual C++ NET案例设计教程》-学习情境八  网络编程_第4页
《Visual C++ NET案例设计教程》-学习情境八  网络编程_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习情境八网络编程任务一创建一个简单的Web浏览器任务二利用WinInet创建一个简单的FTP客户程序返回任务一创建一个简单的Web浏览器知识点详解InternetExplorer浏览器的核心是ActiveX控件,此ActiveX控件称为MSIE。使用MSIE可以实现对动态HTML文档的浏览。在VisualC++NET中使用MSIE,有两种简单的方法:一种是仍然使用文档视图结构,不同的是用新的CHtmlView类来取代CView类或其他视图类;另一种方法是像其他ActiveX控件一样把MSIE插入到一个对话框中。这两种方法都可以实现一个Web浏览器。下面使用第一种方法来创建一个简单的Web浏览器。下一页返回任务一创建一个简单的Web浏览器完成步骤(1)创建一个单文档视图结构的程序框架,项目名称为ex08_1。需要注意的是,在“MFC应用程序向导”对话框的“生成的类”选项面板中,要在“基类”下拉列表框中选择“ChtmlView”选项,从而选择Cex08_1View类的基类为ChtmlView类,如图8-1所示。(2)单击“完成”按钮后,VisualC++NET生成了这个项目,生成文件与前面的单文档视图程序框架相同,区别只是视图类Cex08_1View类的父类为ChtmlView,并且多重载了一个函数OnInitUpdate,这个函数中实现了程序启动时对默认的Web页面的链接和浏览。上一页下一页返回任务一创建一个简单的Web浏览器(3)将上面Navigate2函数中的地址修改为希望的网址后,编译运行程序,会发现程序变成了一个浏览器。只是不能改变此浏览器的导航方向。下面通过添加一个对话框工具栏来实现导航方向的改变。(4)对话框工具栏是MFC自带的一个控件。单击“工具”|“添加资源”命令,在弹出的对话框中选择Dialog,新建一个对话框模板,选择其中的IDD_DIALOGBAR,如图8-2所示。(5)设计该模板如图8-3所示,其中的文本框用来接受用户输入的网址,它的ID为CG_IDD_MYDIALOGBAR,其余的4个按钮模仿浏览器的功能,ID分别为IDC_BUTTON_GO、IDC_BUTTON_NEXT、IDC_BUTTON_BACK、IDC_BUTTON_STOP。上一页下一页返回任务一创建一个简单的Web浏览器(6)在引入这个控件后,在类CmainFrame中添加一个CDialogBar对象m_wndDialogBar,并在OnCreate函数中加入一些代码,以支持对话框工具栏的实现://头文件MainFrm

h///////////////////////////////////////////classCMainFrame:publicCFrameWndEx{…protected:CDialogBarm_wndMyDialogBar;上一页下一页返回任务一创建一个简单的Web浏览器

…}intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWndEx::OnCreate(lpCreateStruct)==-1)return-1;…//初始化对话框条if(!m_wndMyDialogBar

Create(this,CG_IDD_MYDIALOGBAR,CBRS_TOP|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_HIDE_INPLACE,CG_ID_VIEW_MYDIALOGBAR)上一页下一页返回任务一创建一个简单的Web浏览器{TRACE0("创建对话框条失败");return-1;}m_wndMyDialogBar

EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOT⁃TOM);EnableDocking(CBRS_ALIGN_ANY);//船坞化对话框条DockControlBar(&m_wndMyDialogBar);return0;}上一页下一页返回任务一创建一个简单的Web浏览器(7)需要在类CmainFrame中添加一个函数,通过此函数可以获得对话框中文本框的Web地址://头文件MainFrm

h///////////////////////////////////////////classCMainFrame:publicCFrameWndEx{…public:voidGetEditText(CString&str);}//实现文件MainFrm

cpp////////////////////////////////////上一页下一页返回任务一创建一个简单的Web浏览器voidCMainFrame::GetEditText(CString&str){//获取文本框中的内容CEdit*pAddress=(CEdit*)m_wndMyDialogBar

GetDlgItem(IDC_EDIT_Address);pAddress->GetWindowTextW(str);}(8)为这个对话框中的按钮分别在类Cex08_1View中添加单击响应函数,在这几个函数中实现导航功能://头文件Cex08_1View

h////////////////////////////////////////classCex08_1View:publicCHtmlView上一页下一页返回任务一创建一个简单的Web浏览器{protected://生成的消息映射函数protected:afx_msgvoidOnButtonGo();afx_msgvoidOnButtonNext();afx_msgvoidOnButtonStop();afx_msgvoidOnButtonBack();DECLARE_MESSAGE_MAP()};上一页下一页返回任务一创建一个简单的Web浏览器//实现文件Cex08_1View

cpp#include“Cex08_1View

h”IMPLEMENT_DYNCREATE(Cex08_1View,CHtmlView)BEGIN_MESSAGE_MAP(Cex08_1View,CHtmlView)ON_BN_CLICKED(IDC_BUTTON_GO,&Cex08_1View::OnBnClickedButtonGo)ON_BN_CLICKED(IDC_BUTTON_NEXT,&Cex08_1View::OnBnClickedButton⁃Next)上一页下一页返回任务一创建一个简单的Web浏览器ON_BN_CLICKED(IDC_BUTTON_BACK,&Cex08_1View::OnBnClickedButton⁃Back)ON_BN_CLICKED(IDC_BUTTON_STOP,&Cex08_1View::OnBnClickedButton⁃Stop)END_MESSAGE_MAP()…voidCex08_1View::OnBnClickedButtonGo(){//从地址栏中获取地址进行导航上一页下一页返回任务一创建一个简单的Web浏览器CStringstr;((CMainFrame*)(AfxGetApp()->GetMainWnd()))->GetEditText(str);Navigate2(str,NULL,NULL);}voidCex08_1View::OnBnClickedButtonNext(){//向前导航GoForward();}voidCex08_1View::OnBnClickedButtonBack()上一页返回任务一创建一个简单的Web浏览器{//回退GoBack();}voidCex08_1View::OnBnClickedButtonStop(){//终止导航Stop();}(9)现在可以编译这个项目,并且运行它,可以发现,这个程序实现了Web浏览器的最基本的功能。上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序知识点详解一个Internet客户端程序的目的是通过Internet协议,如Gopher、FTP或HTTP,来存取网络数据源的信息。一个Internet客户端程序可以访问服务器,获得像天气预报、重要新闻等数据。Internet客户端可以通过外部网络(Internet)或内部网络(Intranet)访问服务器。VisualC++NET有两种方式来使用WinInet:一种是直接调用Win32Internet函数,另一种是使用WinInet类库。下面使用WinInet类库完成任务。下一页返回任务二利用WinInet创建一个简单的FTP客户程序完成步骤(1)创建一个MFC模板基于对话框的应用程序框架,名称为ex08_2,设计对话框模板如图8-4所示。其中,文本框、列表框和按钮的ID和属性见表8-1。(2)为各控件添加变量,各变量的类型和名称见表8-2。(3)在对话框类中添加两个与Internet相关的变量:一个是CinternetSession类的对象m_Session,一个是CftpConnection对象的指针m_pConnection。另外,为了能让程序使用WinInet类,需要在stdafxh文件中加入包含afxineth和afxh两个文件:上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//stdafx

h#include<afxinet

h>#include<afx

h>//头文件Cex08_2Dlg

hclassCex08_2Dlg:publicCDialogEx{protected:CInternetSessionm_Session;CFtpConnection*m_pConnection;上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序public:CStringm_strServer;CStringm_strDir;CStringm_strUser;CStringm_strPwd;CListBoxm_lstFiles;CStringm_strFile;CButtonm_bnConnect;};上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序(4)为对话框的初始化添加一些代码,设置变量的默认值:BOOLCex08_2Dlg::OnInitDialog(){CDialogEx::OnInitDialog();//TODO:在此添加额外的初始化代码//设置默认的ftp服务器、目录、用户和登录密码m_strServer="ftp

imeic

cn";m_strDir="";m_strUser="anonymous";m_strPwd="user@email

com";//清空列表框m_lstFiles

ResetContent();上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//在没有连接时,置ftp连接为空m_pConnection=NULL;//交换数据,让对话框显示初始化内容UpdateData(FALSE);returnTRUE;//除非将焦点设置到控件,否则返回TRUE}(5)为按钮Connect添加一个BN_CLICKED事件响应函数OnClickedConnect(),编写代码,实现对一个FTP服务器的连接或关闭:voidCex08_2Dlg::OnBnClickedConnect(){//TODO:在此添加控件通知处理程序代码上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//从对话框中获取数据UpdateData(TRUE);//进行连接if(!m_pConnection){if(m_strServer!=""){//利用Internet对话对象m_Session打开一个FTP连接m_pConnection=m_Session

GetFtpConnection(m_strServer,m_strUser,m_strPwd);if(m_pConnection)上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序{//如果连接成功,则获取当前目录m_pConnection->GetCurrentDirectory(m_strDir);//将“Connect”按钮改为“Close”按钮m_bnConnect

SetWindowText("Close");//获取文件列表LoadListOfFiles();//更新对话框数据UpdateData(FALSE);}

上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序

}}else{//断开连接并删除连接对象m_pConnection->Close();deletem_pConnection;//重置连接对象指针为NULLm_pConnection=NULL;//将Close按钮改为Connect按钮m_bnConnect

SetWindowTextA("Connect");上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//重置目录m_strDir="";//清空列表框m_lstFiles

ResetContent();//更新对话框数据UpdateData(FALSE);}}(6)编写LoadLisOfFiles()函数,完成统一处理文件的搜索列表的功能,此函数在上面的OnClickedConnect()函数中有调用:上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//头文件ex08_2Dlg

hclassCex08_2Dlg:publicCDialogEx{…protected:voidLoadListOfFiles(void);};//实现文件ex08_2Dlg

cppvoidCex08_2Dlg::LoadListOfFiles(void){上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//清空列表框m_lstFiles

ResetContent();//构建一个FTP文件操作类对象,同时把FTP连接指针传递给这个对象CFtpFileFindfFiles(m_pConnection);//用来保存文件名CStringstrFileName;//用来设置文件搜索状态BOOLbMoreFiles;//利用默认的方法找到第1个文件,同时也就找到了文件列表bMoreFiles=fFiles

FindFile(NULL);上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//文件搜索,直到最后一个文件while(bMoreFiles){//查找下一个文件bMoreFiles=fFiles

FindNextFileA();//获取该文件的名字strFileName=fFiles

GetFileName();//若为目录,则在名字后加上一个标志if(fFiles

IsDirectory()){strFileName+="<DIR>";上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//将文件名添加到列表框中m_lstFiles

AddString(strFileName);

}}//关闭文件查找对话框fFiles

Close();}(7)为按钮SetDir和GetFile按钮添加BN_CLICKED事件响应函数,分别完成更改目录和下载文件的功能:上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序//SetDir按钮的响应函数voidCex08_2Dlg::OnBnClickedSetdir(){//TODO:在此添加控件通知处理程序代码//获取对话框数据UpdateData(TRUE);if(m_strDir!=""){//通知服务器改变目录m_pConnection->SetCurrentDirectory(m_strDir);//在目录改变之后,重新获取目录上一页下一页返回任务二利用WinInet创建一个简单的FTP客户程序m_pConnection->GetCurrentDirectoryA(m_strDir);//获取新目录下的文件列表LoadListOfFiles();//更新对话框数据UpdateData(FALSE);}}//GetFile按钮的响应函数voidCex08_2Dlg::OnBnClickedGetfile(){//TODO:在此添加控件通知处理程序代码//获取对话框数据上一页下一页返回任务二利

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论