web浏览器源代码.doc_第1页
web浏览器源代码.doc_第2页
web浏览器源代码.doc_第3页
web浏览器源代码.doc_第4页
web浏览器源代码.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

四川师范大学成都学院-课程设计报告 计算机 系级 专业 11计科() 姓名 学号 (密)(封)(线)四川师范大学成都学院课程考查(论文/作业)专用封面作业(论文)题目:xxxxxxxxxxxxxxxx 所修课程名称: xxxxxxxxxxxxxxxxxxxxx 修课程时间:xxx 年 x月至xx 年 xx 月完成论文(作业)日期: xxxx 年 x 月评阅成绩: 评阅意见:评阅教师签名: 年 月 日Web浏览器的设计与实现 内容摘要:论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统设计重点、设计思想、难点技术和解决方案;同时也论述了基于HTTP协议的Web浏览器的开发思路、开发过程、利用的主要技术及本浏览器应用程序的功能模块的说明。 本课题是在深入理解HTTP协议的工作机理,系统掌握了TCP/UDP网络通信协议及网络编程的基本方法,掌握了使用Windows Sockets API和MFC Socket编程技术之后,采用Visual C+作为开发工具来设计并实现一个Web浏览器,其功能主要包括:浏览器的界面实现; 后退、前进、停止、刷新、打开主页、搜索、浏览网页等. 目 录1 技术要求11.1 技术目标12 基本原理13 方案设计23.1 方案原理23.2 系统功能23.3 系统流程图23.4 详细设计33.4.1 利用MFC AppWizard生成应用程序框架33.4.2 添加对话框33.4.3 修改菜单43.4.4 部分关键代码54 调试195 总结206 参考文献2121web浏览器设计与实现1 技术要求1.1 技术目标1) 使用VC中的CHTMLView开发类似微软IE的网络浏览器;2) 要求浏览器具备常用浏览器的基本功能,如后退、前进、停止、刷新、打开主页、搜索、浏览网页等;2 基本原理 我们可以利用MFC的CHTMLView实现简单的网络浏览器。CHtmlView类的主要功能是访问Web网站和HTML文档。要创建一个WEB浏览器类型的应用程序,可以使用CHTMLVIEW类,通过MFC应用程序向导实现。其中,CHTMLView类的成员函数如下;(1) CHTMLView:GoBack可以浏览历史记录中的前一项。(2) CHTMLView:GoForward可以浏览历史记录中的后一项。(3) CHTMLView:Stop可以停止打开文件。(4) CHTMLView:GoRefresh可以重新加载当前页面(5) CHTMLView:GoHome可以浏览当前主页或起始页。(6) CHTMLView:GoSerach可以浏览当前搜索页。(7) CHTMLView:Navigate2可以浏览由UML标识的资源,或由完整路径标识的文件。3 方案设计3.1 方案原理 基于CHtmlView的应用视图类用WebBrowser控件提供视图。这使此应用成为一个网络浏览器。创建网络浏览器的更好方法是使用MFC AppWizard,并将CHtmlView指定为视图类。CHtmlView的功能是为访问网络的应用而设计的。3.2 系统功能 本系统类似于微软的IE 浏览器,具有Web浏览器的基本功能,包括浏览网页、前进、后退、返回主页和搜索功能。 用户可以在地址栏中输入网络地址,按下回车键即可访问地址栏中的域名所对应的网页。利用菜单栏或是工具栏上的图标按钮可以实现网页的“前进”、“后退”、“刷新”、“停止”、“主页”等功能。界面与IE浏览器类似,操作方便快捷。3.3 系统流程图 开 始输入网址,分析请求对象URL通过INTERNET获得请求对象在浏览器上显示 结 束 图1 程序流程图3.4 详细设计3.4.1 利用MFC AppWizard生成应用程序框架 工程名为IE,第一步,工程类型为单文档(SDI),中文语言支持。第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持。第四步选择普通工具栏的风格。第五步不作任何修改,第六步应选择CHtmlView类作为视图类的基类。生成的工程框架包含四个类: 应用程序类,CIEApp,对应IE.h和IE.cpp文件。 框架类,CMainFrame,对应MainFrm.h和MainFrm.cpp文件。 文档类,CIEDoc,对应IEDoc.h和IEDoc.cpp文件。 HtmlView类,CIEView,对应IEView.h和IEView.cpp文件。 此时编译运行,程序已经具有了基本的Web浏览功能,能自动连到微软的网站。现将其修改为为默认网站。3.4.2 添加对话框 打开对话框编辑器,新建对话框,修改各控件属性如下表所示:表1 对话框设置资源标示标题属性IDC_STATIC网址:IDC_EDIT_ADDRESSCString m_addressIDCANCEL取消IDOK确定IDD_DIALOG_ADDRESS网址栏CAddressDlg3.4.3 修改菜单 在选项卡ResourseView中选择manu选项,在菜单上添加操作一栏,并填上相应ID和对应名称,如图所示: 图2 菜单栏修改 其中菜单栏各属性设计如下: 表2 菜单设置资源标识标题消息处理函数ID_NAVIGATE打开网址CIEView:OnNavigate()ID_FORWARD前进CIEView:OnForward()ID_BACK后退CIEView:OnBack()ID_HOME主页CIEView:OnHome()ID_REFRESH刷新CIEView:OnRefresh()ID_STOP停止CIEView:OnStop()3.4.4 部分关键代码AddressDlg.h(CAddressDlg的类定义)#if !defined(AFX_ADDRESSDLG_H_CFCFC94C_FAD5_4CCB_A891_A930EE48233B_INCLUDED_)#define AFX_ADDRESSDLG_H_CFCFC94C_FAD5_4CCB_A891_A930EE48233B_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ AddressDlg.h : header file/ CAddressDlg dialogclass CAddressDlg : public CDialog/ Constructionpublic:CAddressDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DATA(CAddressDlg)enum IDD = IDD_DIALOG_ADDRESS ;CStringm_address;/AFX_DATA/AFX_VIRTUAL(CAddressDlg)/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAddressDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/ Generated message map functions/AFX_MSG(CAddressDlg)/ NOTE: the ClassWizard will add member functions here/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_ADDRESSDLG_H_CFCFC94C_FAD5_4CCB_A891_A930EE48233B_INCLUDED_)AddressDlg.cpp(CAdressDlg的实现部分)/ AddressDlg.cpp : implementation file/#include stdafx.h#include IE.h#include AddressDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAddressDlg dialogCAddressDlg:CAddressDlg(CWnd* pParent /*=NULL*/): CDialog(CAddressDlg:IDD, pParent)/AFX_DATA_INIT(CAddressDlg)m_address = _T();/AFX_DATA_INITvoid CAddressDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAddressDlg)DDX_Text(pDX, IDC_EDIT_ADDRESS, m_address);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAddressDlg, CDialog)/AFX_MSG_MAP(CAddressDlg)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()/ CAddressDlg message handlersCIEView.h(CIEView的类定义)/ IEView.h : interface of the CIEView class/#if !defined(AFX_IEVIEW_H_34C3677D_D9F9_4EA3_B673_FA6A4C232F66_INCLUDED_)#define AFX_IEVIEW_H_34C3677D_D9F9_4EA3_B673_FA6A4C232F66_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000class CIEView : public CHtmlViewprotected: / create from serialization onlyCIEView();DECLARE_DYNCREATE(CIEView)/ Attributespublic:CIEDoc* GetDocument();/ Operationspublic:/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CIEView)public:virtual void OnDraw(CDC* pDC); / overridden to draw this viewvirtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual void OnInitialUpdate(); / called first time after construct/AFX_VIRTUAL/ Implementationpublic:virtual CIEView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:/ Generated message map functionsprotected:/AFX_MSG(CIEView)afx_msg void OnBack();afx_msg void OnForward();afx_msg void OnHome();afx_msg void OnNavigate();afx_msg void OnRefresh();afx_msg void OnStop();/AFX_MSGDECLARE_MESSAGE_MAP();#ifndef _DEBUG / debug version in IEView.cppinline CIEDoc* CIEView:GetDocument() return (CIEDoc*)m_pDocument; #endif/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_IEVIEW_H_34C3677D_D9F9_4EA3_B673_FA6A4C232F66_INCLUDED_)IEView.cpp(CIEView的实现部分)/ IEView.cpp : implementation of the CIEView class/#include stdafx.h#include IE.h#include IEDoc.h#include IEView.h#include AddressDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CIEViewIMPLEMENT_DYNCREATE(CIEView, CHtmlView)BEGIN_MESSAGE_MAP(CIEView, CHtmlView)/AFX_MSG_MAP(CIEView)ON_COMMAND(ID_BACK, OnBack)ON_COMMAND(ID_FORWARD, OnForward)ON_COMMAND(ID_HOME, OnHome)ON_COMMAND(ID_NAVIGATE, OnNavigate)ON_COMMAND(ID_REFRESH, OnRefresh)ON_COMMAND(ID_STOP, OnStop)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CIEView construction/destructionCIEView:CIEView()/ TODO: add construction code hereCIEView:CIEView()BOOL CIEView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CHtmlView:PreCreateWindow(cs);/ CIEView drawingvoid CIEView:OnDraw(CDC* pDC)CIEDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herevoid CIEView:OnInitialUpdate()CHtmlView:OnInitialUpdate();/ TODO: This code navigates to a popular spot on the web./ change the code to go where youd like.Navigate2(_T(/),NULL,NULL);/ CIEView diagnostics#ifdef _DEBUGvoid CIEView:AssertValid() constCHtmlView:AssertValid();void CIEView:Dump(CDumpContext& dc) constCHtmlView:Dump(dc);CIEDoc* CIEView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CIEDoc);return (CIEDoc*)m_pDocument;#endif /_DEBUG/ CIEView message handlersvoid CIEView:OnNavigate()CAddressDlg dlg;if(dlg.DoModal()!=IDOK) return;Navigate2(dlg.m_address);void CIEView:OnBack() / TODO:

温馨提示

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

评论

0/150

提交评论