修改利用类创建浏览器

上传人:沈*** 文档编号:130909950 上传时间:2022-08-05 格式:PPT 页数:31 大小:465KB
返回 下载 相关 举报
修改利用类创建浏览器_第1页
第1页 / 共31页
修改利用类创建浏览器_第2页
第2页 / 共31页
修改利用类创建浏览器_第3页
第3页 / 共31页
点击查看更多>>
资源描述
修改了部分修改了部分利用利用CHtmlView类创建类创建Web浏览器浏览器9.2.1 CHtmlView类与类与WebBrowser控件控件 CHtmlView类在afxhtml.h包含文件中定义,是从CView派生的,如图9.2所示。在标准的MFC框架应用程序中,无论是基于SDI或MDI的,所有从CView派生的类,都提供了由CView提供的功能。图9.2 CHtmlView类的继承关系 CHtmlView类的主要功能是访问Web网站和HTML文档。这是由于CHtmlView类在MFC的文档/视图结构(MFCs document/view architecture)环境中,进一步提供了WebBrowser控件的功能,可以说CHtmlView类是对WebBrowser控件的封装。WebBrowser控件支持通过超链接和统一资源定位器URL导航的Web浏览。使 得 应 用 程 序 成 了 一 个 We b 浏 览 器(w e b browser)。要创建一个Web浏览器型的应用程序,可以使用CHtmlView类。通过MFC应用程序向导实现。9.2.2 CHtmlView 类的成员函数类的成员函数1获取和设置属性(获取和设置属性(Attributes)的成员函数)的成员函数(1)CString GetType()const;(2)long GetLeft()const;void SetLeft(long nNewValue);(3)long GetTop()const;void SetTop(long nNewValue);(4)long GetHeight()const;void SetHeight(long nNewValue);(5)BOOL GetVisible()const;void SetVisible(BOOL bNewValue);其它的函数就不一一列举了。2主要的操作(主要的操作(Operations)成员函数)成员函数这些成员函数非常有用,常常用在应用程序中。void GoBack();导航到历史列表的前一个条目(previous item)。void GoForward();导航到历史列表的下一个条目。void GoHome();导航到主页,该主页在IE的属性中设置。void GoSearch();导航到当前搜索页。该页在IE的属性中设置。void Refresh();重新装入浏览器当前正在显示的URL或者文件,即刷新。void Stop();撤销任何未完成的导航或下载,并且停止任何动态的页面元素,例如背景音乐和动画。Navigate 导航到由URL指定的资源。Navigate2 导航到由URL指定的资源或者由全路径指定的文件。PutProperty 设置与所给定的对象相关的属性的当前值。GetProperty 返回与所给定的对象相关的属性的当前值。ExecWB 执行一个命令。LoadFromResource 在WebBrowser控件中装入一个资源。9.2.3 创建一个创建一个Web浏览器型的应用程序浏览器型的应用程序你可以使用MFC AppWizard创建一个Web浏览器型的应用程序。遵照使用MFC应用程序向导创建SDI或MDI的.exe程序的六个步骤。应用程序必须是基于 MFC 的文档/视图结构的,要注意的是,在第六步,使用Base class下拉列表框,必须选择CHtmlView类作为视图类的基类。其他步骤根据应用程序的需要来决定,大部分使用默认值就可以了。CHtmlView类扮演一个Web浏览器控件的封装器,给你的应用程序一个视图来显示Web或HTML页面。向导在该视图类中对OnInitialUpdate函数创建了一个重载。providing a navigational link to the Microsoft Visual C+Web site:void CWebView:OnInitialUpdate()CHtmlView:OnInitialUpdate();/TODO:This code navigates to a popular spot on the web./change the code to go where youd like.Navigate2(_T(http:/ CWebView:OnInitialUpdate()CHtmlView:OnInitialUpdate();/TODO:This code navigates to a popular spot on the web./change the code to go where youd like.LoadFromResource(IDR_HTML1);需要说明,当你使用MFC应用程序向导创建程序时,如果在第一步为应用程序选择的结构是基于对话框的,则后面的步骤与前面介绍的6个步骤不太一样,只需要4步就够了。(1)为基于对话框的程序完成第)为基于对话框的程序完成第1步步为你的应用程序选择三种结构之一,这里选择基于对话框(Dialog Based)。决定你的应用程序是否要支持MFC的文档/视图结构(document/view architecture),你必须选择支持。为文本选择一种语言,然后点击Next(2)为基于对话框的程序完成第)为基于对话框的程序完成第2步步为你的程序选择基本的用户界面特性和套接字支持。点击Next。(3)为基于对话框的程序完成第)为基于对话框的程序完成第3步步如果你需要源文件中的注释,它告诉你需要在哪里添加你自己的代码。选择你想要如何使用MFC库,作为共享的DLL。还是静态链接的DLL。(4)为基于对话框的程序完成第)为基于对话框的程序完成第4步步如果你想要改变应用程序向导为你提供的默认的类名,头文件名或实现文件名,输入新的名字。点击Finish。9.3 Web浏览器应用程序实例浏览器应用程序实例9.3.1 程序实现的目标程序实现的目标 使用CHtmlView类来实现一个应用程序,使之具有Web浏览器的功能,包括浏览网页、前进、后退、返回主页和搜索功能。通过实例,重点掌握利用CHtmlView类开发Web客户端程序的方法。实现的程序界面如图9.12。图9.12 myWeb应用程序的界面 9.3.2 创建实例程序创建实例程序1利用利用MFC AppWizard生成应用程序框生成应用程序框架架 工程名为myWeb,第一步,工程类型为单文档(SDI),中文语言支持。第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持。第四步选择Internet Explorer ReBars工具栏的风格,这样就有了用来输入网址的文本框。第五步不作任何修改,第六步应选择CHtmlView类作为视图类的基类。生成的工程框架包含四个类:应用程序类,CMyWebApp,对应myWeb.h和myWeb.cpp文件。框架类,CMainFrame,对应MainFrm.h和MainFrm.cpp文件。文档类,CMyWebDoc,对应myWebDoc.h和myWebDoc.cpp文件。H t m l V i e w 类,C M y W e b V i e w,对 应myWebView.h和myWebView.cpp文件。此时编译运行,程序已经具有了基本的Web浏览功能,能自动连到微软的网站。2修改菜单修改菜单 修改菜单,添加用户需要的功能条目。在工作区中选择ResourceView卡,选择Menu,双击菜单控件的名字(IDR_MAINFRAME),右边出现程序的菜单。点击菜单中的“查看”项,已经有了“工具栏”和“状态栏”两个条目,双击下面的空框,弹出设置菜单条目属性对话框,如图9.13所示,按照表9.1添加六个菜单条目。图9.13 设置菜单条目属性的对话框表9.1 要添加的菜单条目菜单条目名称(Caption)ID号前进ID_FOWARD后退ID_BACK停止ID_STOP刷新ID_UPDATE主页ID_HOMEPAGE搜索ID_SEARCH3修改工具栏修改工具栏 在工具栏上增加新的按钮,以便快速执行所需的功能。在工作区中选择ResourceView卡,选择ToolBar,双击工具条控件的名字(IDR_MAINFRAME),右边出现程序的工具条。双击其中的按钮,可以看到它们的属性。其中有一个空的按钮,双击它可以添加新的按钮的属性,如图9.14,利用右边的图形绘制工具,可以自己设计新按钮的图样。按照表9.1添加六个按钮,它们的ID号与相应的菜单条目相同。拖动按钮,可以改变按钮之间的相对位置。4为控件添加事件处理函数为控件添加事件处理函数 当用户点击菜单条目,或者点击相应的快捷按钮时,应能引起程序的反映,这就需要给这些控件添加事件处理函数。进入类向导,选择“Message Maps”卡。在“Class Name”下拉框中选择CMyWebView类,然后按照表9.2,为前述的六个控件添加事件处理函数。表9.2 六个控件对应的事件处理函数 对象IDMessagesMember FunctionID_FOWARDCOMMANDOnFoward()ID_BACKCOMMANDOnBack()ID_STOPCOMMANDOnStop()ID_UPDATECOMMANDOnUpdate()ID_HOMEPAGECOMMANDOnHomepage()ID_SEARCHCOMMANDOnSearch()5添加事件处理函数的代码添加事件处理函数的代码在myWebView.cpp实现文件中,添加上述六个事件处理函数的代码。/前进到下一个网页void CMyWebView:OnFoward()GoForward();/退到前一个网页void CMyWebView:OnBack()GoBack();/停止网页的下载void CMyWebView:OnStop()Stop();/刷新当前的网页void CMyWebView:OnUpdate()Refresh();/回到主页void CMyWebView:OnHomepage()GoHome();/进行搜索void CMyWebView:OnSearch()GoSearch();此时可以再编译运行,应当没有问题。6为应用程序添加为应用程序添加URL定位功能定位功能至此,应用程序还无法浏览用户想要的网页,还没有URL定位功能。通过以下步骤来添加这个功能。(1)添加网址输入栏控件在建立应用程序框架时,曾选择了Internet Explorer ReBars的工具条风格,这就自动在程序的资源中添加了一个对话框条,可以将它变为一个网址的输入栏。在工作区中选择ResourceView卡,选择Dialog,双击对话框控件的名字(IDR_MAINFRAME),右边出现这个对话框条。在上面添加一个“地址:”的静态文本,再添加一个文本编辑框控件,ID号是IDC_ADDR,作为地址栏,提供给用户输入要浏览的网站地址。(2)添加控制代码设想当用户在地址栏中输入网址后,打回车键时,浏览器应用程序就下载并显示指定的新网页,为了实现这个功能,考虑到用户在文本编辑框中按下回车键后,会有一个IDOK的消息发送到主框架类,可以添加处理这个消息的控制函数,在该函数中,用指定的网址调用Navigate()或者Navigate2()函数,就可以实现对该网页的浏览。在MainFrm.h文件中,添加消息处理函数的声明:public:void OnNew();在MainFrm.cpp文件中,添加该函数的实现代吗:void CMainFrame:OnNew()CString pp;/获得用户在地址栏中输入的URLm _ w n d D l g B a r.G e t D l g I t e m(I D C _ A D D R)-GetWindowText(pp);/浏览指定的网页(CMyWebView*)GetActiveView()-Navigate(pp);其中m_wndDlgBar是代表地址栏文本框所在的对话框条控件的成员变量,是在生成应用程序框架的时候自动创建的,利用它的GetDlgItem方法取得地址栏控件的ID,再利用地址栏控件的GetWindowText方法获得用户输入的网址。另外,由GetActiveView()函数返回的是一个CView类的指针,必须将它强制转换成本应用程序视图类的指针,才能调用Navigate()函数。建立事件处理函数与消息的映射在MainFrm.cpp文件中,再消息映射(MESSAGE_MAP)段中添加自己的消息映射的宏。用ON_COMMAND命令建立IDOK消息和处理函数OnNew的映射关系。BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)/AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()/AFX_MSG_MAPON_COMMAND(IDOK,OnNew)/自己的消息映射宏END_MESSAGE_MAP()要注意,自己添加的消息映射宏要放在类向导自动生成的代码之外,一般放在AFX_MSG_MAP宏的后面。在myWebView.h文件的类定义前面添加包含语句#include myWebDoc.h经过上述处理,应用程序就可以自由地浏览网页了在mainfrm.cpp中添加#include“MyWebView.h7解决点击超链接时地址栏的同步问题解决点击超链接时地址栏的同步问题当用户点击网页中的超链接来浏览其他网页时,地址栏中应显示该链接的网址,以便用户能了解自己所在的位置,解决这个问题可以利用CHtmlView类的事件 处 理 函 数。当 网 页 下 载 完 成 后,会 触 发OnDocumentComplete()函数,该函数的参数就是所下载网页的URL,可以利用此函数对地址栏进行设置。添加以下代码:在MainFrm.h文件中,添加处理函数的声明:public:void SetPage(LPCTSTR lpszURL);在MainFrm.cpp文件中,添加该函数的实现代吗:void CMainFrame:SetPage(LPCTSTR lpszURL)m_wndDlgBar.GetDlgItem(IDC_ADDR)-SetWindowText(lpszURL);该函数页使用了地址栏所在的对话框条控件对应的成员变量,将指定的URL显示在地址栏中。使用类向导添加事件处理函数用 类 向 导 为 应 用 程 序 的 C M y W e b V i e w 类 添 加O n D o c u m e n t C o m p l e t e()事 件 处 理 函 数。并 在myWebView.cpp文件中添加它的实现代码void CMyWebView:OnDocumentComplete(LPCTSTR lpszURL)/TODO:Add your specialized code here and/or call the base class(C M a i n F r a m e*)G e t P a r e n t F r a m e()-SetPage(lpszURL);/CHtmlView:OnDocumentComplete(lpszURL);添加包含语句在MainFrm.cpp文件前面添加包含语句#include myWebView.h在myWebView.cpp文件前面添加包含语句。#include MainFrm.h 至此,编译运行程序,应能很好地运行了。在myWebView.h中添加public:void OnDocumentComplete(LPCTSTR lpszURL);在myWebView.h中添加#include MainFrm.h
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!