网络浏览器.docx
- 文档编号:23285273
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:11
- 大小:937.97KB
网络浏览器.docx
《网络浏览器.docx》由会员分享,可在线阅读,更多相关《网络浏览器.docx(11页珍藏版)》请在冰豆网上搜索。
网络浏览器
网页浏览器
一、设计目的
随着互联网在世界范围的广泛应用,网络浏览器便是信息交流中必不可少的工具。
本题目要求同学在熟练掌握VC下有关网络编程理论的基础上,实现一个能够浏览网页的浏览器。
二、设计主要方案及理论
CHtmlView类的主要功能是访问Web网站和HTML文档。
这是由于CHtmlView类在MFC的文档/视图结构(MFC'sdocument/viewarchitecture)环境中,进一步提供了WebBrowser控件的功能,可以说CHtmlView类是对WebBrowser控件的封装。
WebBrowser控件支持通过超链接和统一资源定位器URL导航的Web浏览。
使得应用程序成了一个Web浏览器(webbrowser)。
要创建一个Web浏览器型的应用程序,可以使用CHtmlView类。
通过MFC应用程序向导实现。
CHtmlView类的成员函数
获取和设置属性(Attributes)的成员函数
(1)CStringGetType()const;
(2)longGetLeft()const;
voidSetLeft(longnNewValue);
(3)longGetTop()const;
voidSetTop(longnNewValue);
(4)longGetHeight()const;
voidSetHeight(longnNewValue);
(5)BOOLGetVisible()const;
voidSetVisible(BOOLbNewValue);
其它的函数就不一一列举了。
主要的操作(Operations)成员函数
这些成员函数非常有用,常常用在应用程序中。
voidGoBack();导航到历史列表的前一个条目(previousitem)。
voidGoForward();导航到历史列表的下一个条目。
voidGoHome();导航到主页,该主页在IE的属性中设置。
voidGoSearch();导航到当前搜索页。
该页在IE的属性中设置。
voidRefresh();重新装入浏览器当前正在显示的URL或者文件,即刷新。
voidStop();撤销任何未完成的导航或下载,并且停止任何动态的页面元素,例如背景音乐和动画。
Navigate导航到由URL指定的资源。
Navigate2导航到由URL指定的资源或者由全路径指定的文件。
PutProperty设置与所给定的对象相关的属性的当前值。
GetProperty返回与所给定的对象相关的属性的当前值。
ExecWB执行一个命令。
LoadFromResource在WebBrowser控件中装入一个资源。
三、设计主要步骤及程序源代码
1.利用MFCAppWizard生成应用程序框架
工程名为myWeb,第一步,工程类型为单文档(SDI),中文语言支持。
第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持。
第四步选择InternetExplorerReBars工具栏的风格,这样就有了用来输入网址的文本框。
第五步不作任何修改,第六步应选择CHtmlView类作为视图类的基类。
生成的工程框架包含四个类:
应用程序类,CMyWebApp,对应myWeb.h和myWeb.cpp文件。
框架类,CMainFrame,对应MainFrm.h和MainFrm.cpp文件。
文档类,CMyWebDoc,对应myWebDoc.h和myWebDoc.cpp文件。
HtmlView类,CMyWebView,对应myWebView.h和myWebView.cpp文件。
此时编译运行,程序已经具有了基本的Web浏览功能,能自动连到微软的网站。
2.修改菜单
修改菜单,添加用户需要的功能条目。
在工作区中选择ResourceView卡,选择Menu,双击菜单控件的名字(IDR_MAINFRAME),右边出现程序的菜单。
点击菜单中的“查看”项,已经有了“工具栏”和“状态栏”两个条目,双击下面的空框,弹出设置菜单条目属性对话框。
(如图1-1,表1-1)
图1-1
表1-1
3.修改工具栏
在工具栏上增加新的按钮,以便快速执行所需的功能。
在工作区中选择ResourceView卡,选择ToolBar,双击工具条控件的名字(IDR_MAINFRAME),右边出现程序的工具条。
双击其中的按钮,可以看到它们的属性。
其中有一个空的按钮,双击它可以添加新的按钮的属性。
添加六个按钮,它们的ID号与相应的菜单条目相同。
拖动按钮,可以改变按钮之间的相对位置。
(如图1-2)
图1-2
4.为控件添加事件处理函数
当用户点击菜单条目,或者点击相应的快捷按钮时,应能引起程序的反映,这就需要给这些控件添加事件处理函数。
进入类向导,选择“MessageMaps”卡。
在“ClassName”下拉框中选择CMyWebView类,为前述的六个控件添加事件处理函数。
(如图1-3,表1-2)
表1-2
图1-3
5.添加事件处理函数的代码
在myWebView.cpp实现文件中,添加上述六个事件处理函数的代码。
//前进到下一个网页
voidCMyWebView:
:
OnFoward(){GoForward();}
//退到前一个网页
voidCMyWebView:
:
OnBack(){GoBack();}
//停止网页的下载
voidCMyWebView:
:
OnStop(){Stop();}
//刷新当前的网页
voidCMyWebView:
:
OnUpdate(){Refresh();}
//回到主页
voidCMyWebView:
:
OnHomepage(){GoHome();}
//进行搜索
voidCMyWebView:
:
OnSearch(){GoSearch();}
6.为应用程序添加URL定位功能
至此,应用程序还无法浏览用户想要的网页,还没有URL定位功能。
通过以下步骤来添加这个功能。
(1)添加网址输入栏控件
在建立应用程序框架时,曾选择了InternetExplorerReBars的工具条风格,这就自动在程序的资源中添加了一个对话框条,可以将它变为一个网址的输入栏。
在工作区中选择ResourceView卡,选择Dialog,双击对话框控件的名字(IDR_MAINFRAME),右边出现这个对话框条。
在上面添加一个“地址:
”的静态文本,再添加一个文本编辑框控件,ID号是IDC_ADDR,作为地址栏,提供给用户输入要浏览的网站地址。
(如图1-4)
图1-4
(2)添加控制代码
设想当用户在地址栏中输入网址后,打回车键时,浏览器应用程序就下载并显示指定的新网页,为了实现这个功能,考虑到用户在文本编辑框中按下回车键后,会有一个IDOK的消息发送到主框架类,可以添加处理这个消息的控制函数,在该函数中,用指定的网址调用Navigate()或者Navigate2()函数,就可以实现对该网页的浏览。
①在MainFrm.h文件中,添加消息处理函数的声明:
public:
voidOnNew();
②在MainFrm.cpp文件中,添加该函数的实现代吗:
voidCMainFrame:
:
OnNew()
{
CStringpp;
//获得用户在地址栏中输入的URL
m_wndDlgBar.GetDlgItem(IDC_ADDR)->GetWindowText(pp);
//浏览指定的网页
((CMyWebView*)GetActiveView())->Navigate(pp);
}
③建立事件处理函数与消息的映射
在MainFrm.cpp文件中,再消息映射(MESSAGE_MAP)段中添加自己的消息映射的宏。
用ON_COMMAND命令建立IDOK消息和处理函数OnNew的映射关系。
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(IDOK,OnNew)//自己的消息映射宏
END_MESSAGE_MAP()
④在myWebView.h文件的类定义前面添加包含语句
#include"myWebDoc.h"
7.解决点击超链接时地址栏的同步问题
当用户点击网页中的超链接来浏览其他网页时,地址栏中应显示该链接的网址,以便用户能了解自己所在的位置,解决这个问题可以利用CHtmlView类的事件处理函数。
当网页下载完成后,会触发OnDocumentComplete()函数,该函数的参数就是所下载网页的URL,可以利用此函数对地址栏进行设置。
添加以下代码:
①在MainFrm.h文件中,添加处理函数的声明:
public:
voidSetPage(LPCTSTRlpszURL);
②在MainFrm.cpp文件中,添加该函数的实现代吗:
voidCMainFrame:
:
SetPage(LPCTSTRlpszURL)
{
m_wndDlgBar.GetDlgItem(IDC_ADDR)->SetWindowText(lpszURL);
}
该函数页使用了地址栏所在的对话框条控件对应的成员变量,将指定的URL显示在地址栏中。
③使用类向导添加事件处理函数
用类向导为应用程序的CMyWebView类添加OnDocumentComplete()事件处理函数。
并在myWebView.cpp文件中添加它的实现代码
voidCMyWebView:
:
OnDocumentComplete(LPCTSTRlpszURL)
{
//TODO:
Addyourspecializedcodehereand/orcallthebaseclass
((CMainFrame*)GetParentFrame())->SetPage(lpszURL);
//CHtmlView:
:
OnDocumentComplete(lpszURL);
}(如图1-5)
图1-5
④添加包含语句
在MainFrm.cpp文件前面添加包含语句
#include"myWebView.h"
在myWebView.cpp文件前面添加包含语句。
#include"MainFrm.h"
四、运行结果
图1-6
图1-7
五、设计评述
在使用MFCAppWizard创建一个Web浏览器型的应用程序。
遵照使用MFC应用程序向导创建SDI或MDI的.exe程序的六个步骤。
应用程序必须是基于MFC的文档/视图结构的,要注意的是,在第六步,使用Baseclass下拉列表框,必须选择CHtmlView类作为视图类的基类。
其他步骤根据应用程序的需要来决定,大部分使用默认值就可以了。
可视化的程序设计很有效率,只需要编写少量的程序代码,了解各种控件的属性和操作就可以快捷的完成复杂的程序设计。
六、参考文献
1谭浩强,C程序设计,清华大学出版社
2胡海生,VisualC++6.0编程,清华大学出版社
3郑阿奇,VisualC++实用教程,电子工业出版社
4孙鑫,VC++深入详解,电子工业出版社
5陈天华,面向对象程序设计与VisualC++6.0教程,北京高等教育
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 浏览器