2022年我的Web浏览器设计宣贯 .pdf
《2022年我的Web浏览器设计宣贯 .pdf》由会员分享,可在线阅读,更多相关《2022年我的Web浏览器设计宣贯 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 计 算 机 网 络 课 程 设 计题目 :Web 浏览器设计成员姓名:班级:指导教师:日期: 20012 年 6 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 30 页 - - - - - - - - - 2 目录1、系统分析 . 3 1.1 系统需求 . 3 1.2 功能要求 . 3 1.3 运行环境 . 3 1.4 开发工具 . 3 2、概要设计 . 4 2.1 基本设计概念 . 4 2.2 软件设计层次图 . 5 3、详细设计 . 6 3.1 web 浏览器
2、基本功能的实现 . 6 3.2 收藏夹功能设计 . 10 3.3 历史记录功能设计 . 13 3.4 抓图工具设计 . 15 4、系统运行. . .25 5、设计总结 . 29 参考文献 . 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 30 页 - - - - - - - - - 3 1、系统分析1.1系统需求浏览器是指可以显示网页服务器或者文件系统的HTML 文件内容,并让用户与这些文件交互的一种软件。 网页浏览器主要通过HTTP 协议与网页服务器交互并获取网
3、页,这些网页由 URL指定,文件格式通常为HTML ,并由 MIME在 HTTP 协议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,同时也越来越离不开浏览器,人们利用浏览器可以查看很多东西,上淘宝,需要浏览器,上百度搜索东西,需要浏览器,打开网站网址,需要浏览器。由此浏览器的种类也越来越多,如IE 浏览器、谷歌浏览器、 360浏览器、遨游浏览器等等。因此,浏览器对于人们的生活起着举足轻重的作用,浏览器的作用范围将不断扩大,人们的生活将离不开浏览器的使用。1.2 功能要求使用 ChtmlView 类来实现一
4、个应用程序,使之具有Web浏览器的功能,包括浏览网页、前进、后退、返回主页、刷新、搜索、收藏夹、历史记录、抓图、删除等功能。1.3 运行环境本系统基于 Windows平台设计,适用于 Windows 系列的系统,如流行的 Windows XP、Windows Vista等。1.4 开发工具:VC+6.0C程序开发软件;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 30 页 - - - - - - - - - 4 2、概要设计2.1 基本设计概念利用已有的 HTTP 控制
5、、 HTML 解释器和 HTML 执行器,通过 MFC 提供的 CHtmlView类实现的一个 Windows下的多功能的浏览器。该浏览器的功能包括: WEB 站点浏览、本地和网络的文件系统的浏览、前进、后退、返回主页、刷新、搜索、历史记录的维护、IE 收藏夹功能和设置桌面快捷方式功能等。22 软件设计层次图2.2.1 系统流程图:当用户登录此简易浏览器时,需要在地址栏输入需要搜索的内容的网址,当输入网址后,该浏览器会链接到相应的URL 地址,实现页面的下载,并显示页面,从而实现该简易浏览器连接网络的功能。输入网址下载页面显示页面返回前进名师资料总结 - - -精品资料欢迎下载 - - - -
6、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 30 页 - - - - - - - - - 5 2.2.2 功能结构图:该程序的设计主要分5 部分。首先是登录界面的实现,其中要创建按钮,创建菜单栏及下拉菜单的实现; 第二部分要实现各按钮的具体的功能包括在其中设置监听器,实现对按钮动作的监听及响应;第三部分用于对地址栏输入内容格式的设定包括如何处理异常等;第四部分实现页面的下载;第五部分用于实现页面的显示。具体的功能结构图如下:登录界面实现功能按钮实现URL 连接实现下载链接页面显示链接页面web 浏览器名师资料总结 - -
7、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 30 页 - - - - - - - - - 6 3、详细设计3.1 web浏览器基本功能(前进、后退、停止、刷新、搜索、主页)的实现:3.1.1 .利用 MFC AppWizard生成应用程序框架创建工程名为 HtmlView。第一步,选择工程类型为单文档 (SDI), 中文语言支持。 第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持;第四步选择Internet Explorer ReBars工具栏的风格,这样就有了用来输入网
8、址的文本框;第五步不做任何修改;第六步选择CHtmlView类作为视图类的基类。生成工程框架包含4 个类。(1) 应用程序类: CHtmlViewApp ,对应 HtmlView.h 和 HtmlView.cpp 文件。(2) 框架类: CMainFrame ,对应 MainFrm.h 和 MainFrm.cpp 文件。(3) 文档类: HtmlViewDoc,对应 HtmlViewDoc.h 和 HtmlViewDoc.cpp 文件。(4) HtmlView 类: CHtmlViewView, 对应 CHtmlViewView.h 和 CHtmlViewView.cpp 文件。此时编译运行,
9、程序已经具有基本的Web浏览功能,能自动链接到微软公司的网站。3.1.2修改菜单在工作区中选择“ ResourceView”选项卡,选择Menu ,双击菜单控件的名字(IDR_MAINFRAME), 右边出现程序的菜单。选择菜单中的“查看”命令,已经有了“工具栏”和“状态栏”两个条目,双击下面的空框,弹出设置菜单条目属性对话框,按照表添加菜单项:菜单条目名称( Caption )ID 号前进ID_FOWARD 后退ID_BACK 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页
10、,共 30 页 - - - - - - - - - 7 停止ID_STOP 刷新ID_REFRESH 主页 ID_HOME 搜索ID_SEARCH 3.1.3修改工具栏:在工作区中选择“ ReaourcecView”选项卡,选择ToolBar ,双击工具条控件的名字(IDR_MAINFRAME) ,右边出现程序的工具条。添加如图的新的按钮图样。他们的ID 号与相应的菜单条目相同。使他们的ID 号与相应的菜单条目的ID 号相同。3.1.4添加控件事件处理函数:进入类向导,选择“Message Maps ”选项卡。在“ Class Name”下拉列表框中选择CHtmlViewView类,然后按照表
11、为控件添加事件处理函数。对象 ID Messages Member Function ID_FORWARD COMMAND OnFoward() ID_BACK COMMAND OnBack() ID_STOP COMMAND OnStop() ID_REFRESH COMMAND OnRefresh() ID_HOME COMMAND OnHome() ID_SEARCH COMMAND OnSearch() 3.1.5添加事件处理函数代码:在 CHtmlViewView.cpp 实现文件中,添加上述6 个时间处理函数的代码。void CHtmlViewView:OnBack() GoBac
12、k(); / 后退;void CHtmlViewView:OnForward() GoForward();/前进;void CHtmlViewView:OnHome() GoHome();/主页;void CHtmlViewView:OnStop() Stop();/停止;void CHtmlViewView:OnRefresh() Refresh();OnOldlogins();/刷新;void CHtmlViewView:OnSearch() GoSearch( );/搜索;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
13、师精心整理 - - - - - - - 第 7 页,共 30 页 - - - - - - - - - 8 3.1.6添加 URL定位功能:(1)添加网址输入栏控件。在工作 区中 选择“ Resource View ”选 项卡, 选择Dialog ,双击对 话框 控件 的名字(IDR_MAINFRAME), 右边出现对话框条。在上面添加一个“请输入地址”的静态文本,再添加一个组合框控件, ID 号设为 IDC_EDIT_ADDRESS,作为地址栏,提供给用户输入要浏览的网站地址。如图所示。(2)添加控制代码。当用户输入网址后按回车时,就有一个IDOK的消息发送到主框架类,添加处理这个消息的控制函
14、数,在该函数中,用指定的网址调用Navigate()和 Navigate2() 函数 , 就可以实现对该网页的浏览。在 MainFrm.h 文件中,添加消息处理函数的声明。public:void OnInputAddress(); 在 MainFrm.cpp 文件中,添加该函数的实现代码。void CMainFrame:OnInputAddress() / 当用户输入 Web地址并且回车 CString sWebAddress ; / 从编辑框获取用户输入的Web 地址m_wndDlgBar.GetDlgItem(IDC_EDIT_ADDRESS)-GetWindowText(sWebAddr
15、ess); / 浏览相应的网页 (CHtmlView *)GetActiveView()-Navigate(sWebAddress); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 30 页 - - - - - - - - - 9 在 MainFrm.cpp 的文件中,在消息映射(MESSAGE_MAP)段中添加自己的消息映射宏。ON_COMMAND(IDOK,OnInputAddress);3.1.7解决单击超级链接时地址栏的同步问题:利用 CHtmlView 类的事
16、件处理函数,当网页下载完成,会触发OnDocumentComplete()函数,该函数的参数就是所下载网页的URL ,可以利用此函数对地址栏进行设置,添加以下代码。 在 MainFrm.h 文件中,添加处理函数的声明。public:void SetURL(LPCTSTR lpszURL);在 MainFrm.cpp 文件中,添加该函数的实现代码。void CMainFrame:SetURL(LPCTSTR lpszURL) m_wndDlgBar.GetDlgItem(IDC_EDIT_ADDRESS)-SetWindowText(lpszURL); m_wndDlgBar.GetDlgIte
17、m(IDC_shortcutname)-SetWindowText(lpszURL); 使用类 向导 添加 事件 处理 函数 。用 类向 导为 应用 程序的CHtmlViewView 类 添加OnDocumentComplete(LPCTSTR lpszURL) 事件处理函数,并在myWeb16View.cpp文件中添加它的实现代码。void CHtmlViewView:OnDocumentComplete(LPCTSTR lpszURL) / 每次当前页面改变,更新地址栏的内容和窗口的标题(CMainFrame *)GetParentFrame()-SetURL(lpszURL); GetD
18、ocument()-SetTitle(lpszURL); CHtmlView:OnDocumentComplete(lpszURL); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 30 页 - - - - - - - - - 10 3.2 收藏夹功能设计:3.2.1. 修改菜单:在菜单中加入“收藏夹”栏。3.2.2. 创建“收藏夹”:在主框架类的创建函数: OnCreate(LPCREATESTRUCT lpCreateStruct)实现代码中添加如下代码 (与菜单中
19、“收藏夹”子菜单相对应,同时与IE 浏览器的注册表相连):/生成“我的收藏夹”子菜单TCHAR szMAX_PATH; /260 TCHAR szPathMAX_PATH; /260 HKEYhKey; DWORD dwSize; CMenu* pMenu; / 开始消去存在的菜单pMenu = GetMenu()-GetSubMenu(4); while(pMenu-DeleteMenu(0, MF_BYPOSITION);/0X00000400L /从注册表中找到“我的收藏夹的位置”,然后读写注册表if(RegOpenKey(HKEY_CURRENT_USER, _T(SoftwareMi
20、crosoftWindowsCurrentVersionExplorerUser Shell Folders), &hKey) != ERROR_SUCCESS) TRACE0(Favorites folder not foundn); return 0; dwSize = sizeof(sz); RegQueryValueEx(hKey, _T(Favorites), NULL, NULL, (LPBYTE)sz, &dwSize); ExpandEnvironmentStrings(sz, szPath, MAX_PA TH); RegCloseKey(hKey); /添加我的收藏菜单项B
21、uildFavoritesMenu(szPath, 0, pMenu); 3.2.3. 在主框架类CMainFrame中添加 BuildFavoritesMenu()函数实现收藏夹的收藏功名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 30 页 - - - - - - - - - 11 能:a.在 MainFrm.h 中声明 int BuildFavoritesMenu(LPCTSTR pszPath, int nStartPos, CMenu *pMenu)函数实现添
22、加我的收藏菜单项;b.在 MainFrm.cpp 中实现 BuildFavoritesMenu() 的功能,具体实现代码如下:int CMainFrame:BuildFavoritesMenu(LPCTSTR pszPath, int nStartPos, CMenu *pMenu) CString strPath(pszPath);CString strPath2;CString str; WIN32_FIND_DA TA wfd; HANDLE h; int nPos; int nEndPos; int nNewEndPos; int nLastDir; TCHAR buf2048; CS
23、tringArray astrFavorites; CStringArray astrDirs; CMenu* pSubMenu; / 确定有 字符if(strPathstrPath.GetLength() - 1 != _T() strPath += _T(); strPath2 = strPath; strPath += *.*; / 首先扫描.URL 然后扫描子目录h = FindFirstFile(strPath, &wfd); if(h != INV ALID_HANDLE_VALUE) nEndPos = nStartPos; do if(wfd.dwFileAttributes&
24、(FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM)=0) str = wfd.cFileName; if(str.Right(4) = _T(.url) / an .URL file is formatted just like an .INI file, so we can / use GetPrivateProfileString() to get the information we want :GetPrivateProfileString(_T(InternetShortcut), _T(URL
25、),_T(), buf, 2048, strPath2 + str); str = str.Left(str.GetLength() - 4); / scan through the array and perform an insertion sort / to make sure the menu ends up in alphabetic order for(nPos = nStartPos ; nPos nEndPos ; +nPos) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年我的Web浏览器设计宣贯 2022 Web 浏览器 设计
限制150内