ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:22KB ,
资源ID:5098440      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5098440.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IE浏览器作为微软Windows系统捆绑销售的一个浏览工具.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IE浏览器作为微软Windows系统捆绑销售的一个浏览工具.docx

1、IE浏览器作为微软Windows系统捆绑销售的一个浏览工具前言IE 浏览器作为微软 Windows 系统捆绑销售的一个浏览工具,用来浏览千姿百态的网页,目前它已经占据了浏览器市场的半壁江山,成为 Windows 用户不可或缺的工具。 首先,它的界面设计的很漂亮,如扁平按纽(按钮上的图像为灰色, 当鼠标放在按钮上时, 按钮突起,这种状态称为手柄,并且其上的图像变得鲜艳醒目)、按钮上的文字说明以及按钮边上的小黑三角形状的下拉箭头(单击时显示下拉菜单)、工具条上的地址输入栏等,都体现了 Windows2000的风格;其次,它的收藏栏可以收藏用户喜爱的网络地址,这一切都为IE 的流行打下了坚实的基础。

2、说了那么多,也许读者朋友们感觉到IE 实现起来一定非常困难, 其实 IE 也是个 纸老虎 ,实现它的难点主要是在界面效果和显示收藏夹上,笔者在本文中有针对性的叙述了IE 界面、收藏网页的显示、 网页的浏览等功能的实现, 仔细看过这篇文章后,相信读者朋友们一定可以打造出一个属于自己的浏览器。 本文中的代码在 Windows2000 、Visual C+6.0 环境下编译通过, 程序运行正常。程序运行界面如下:图一、浏览器的运行界面一、浏览器的界面实现首先启动 Visual C+6.0 ,生成一个名为 MYIE 单文档项目,注意在此过程中不要选择工具条和状态条选项, 这样才能更方便我们在后续工作中

3、用代码实现 Windwos2000 风格的工具条、状态条;在工具条中添加地址栏;项目的视图类的基类为 ChtmlView ,该类的Navigate2 ()成员函数专门用来现实超文本格式的文档。在主框架类 CmainFrame 中定义 CStatusBar m_wndStatusBar (状态条对象)、CToolBar m_wndToolBar (工具栏对象)、 CReBar m_wndReBar(、CComboBoxEx m_wndAddress (扩展的组合框对象,用来作为地址栏)、 CAnimateCtrl m_wndAnimate (动画控件,用来在工具栏上显示动画)、图像列表对象 CI

4、mageList img (存放显示在工具栏上的图标)等对象。向当前项目 AVI 资源文件,ID 标志 IDR_MFCAVI ,添加 Bitmap( 位图 )资源, ID 标志分别为 IDB_COLDTOOLBAR 、 IDB_HOTTOOLBAR ,分别如下所示:图二、包含按钮图标的位图1)IE 风格工具条IE 风格界面的实现主要在主框架类的 CMainFrame:OnCreate()函数中实现,它的主要思想如下: CReBar 对象用来作为工具条、地址栏、动画控件的容器, CImageList 对象,然后分别装载工具栏上按钮的热点图像和正常状态下显示的图像, 并将该对象附给工具条对象,使之

5、建立关联。 为了显示扁平工具栏, 需要用 CreateEx()函数创建 CToolBar 对象 m_wndToolBar ,用 ModifyStyle ()函数将工具栏的风格设为扁平类型,注意这里不能用 CToolBar:Create ()或 CToolBar: SetBarStyle ()设置这种新风格。 CToolBar 类不支持 TBSTYLE_FLAT ,要解决这个问题,必须绕过 CToolBar 类,使用 CWnd:ModifyStyle ()。要将某一个工具栏按钮设置为附带有下拉 按 钮 , 可 以 调 用 SetButtonInfo ( ) 设 置 按 钮 的 风 格 为TBST

6、YLE_DROPDOWN 。至于按钮带有中文提示,用工具栏的SetButtonText ()就可以轻松实现了。下面是实现 IE 风格界面的代码和注释:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)CImageList img; / 图像列表对象;CString str; / 字符串对象;if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndReBar.Create(this) / 创建 CReBar 对象; TRACE0(Failed to create re

7、barn);return -1; if (!m_wndToolBar.CreateEx(this) /使用 CreateEx() 函数创建工具条对象; TRACE0(Failed to create toolbarn); return -1; /设置工具栏中的按钮最大最小尺寸;m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);/设置工具栏上的按钮支持下拉箭头风格;m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);/向图像列表装载热点图像资源,

8、IDB_HOTTOOLBAR 为热点图像资源 ID img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255); m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);img.Detach();/图象列表装载正常状态的图像资源, IDB_COLDTOOLBAR 为图像资源 IDimg.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255); m_wndToolBar.GetToolBarCtrl().SetImageList(&img); img.Detach()

9、;/设置工具条为扁平风格m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |TBSTYLE_TRANSPARENT);/设置工具条上的按钮个数为 9 个;m_wndToolBar.SetButtons(NULL, 9);/装载字符串资源,设置按钮上的文本和按钮的标识号;m_wndToolBar.SetButtonInfo(0, ID_GO_BACK,TBSTYLE_BUTTON, 0);str.LoadString(IDS_BACK);m_wndToolBar.SetButtonText(0, str);m_wndToolBar.SetButtonInfo(1,

10、TBSTYLE_BUTTON, 1);str.LoadString(IDS_FORWARD);m_wndToolBar.SetButtonText(1, str);m_wndToolBar.SetButtonInfo(2,TBSTYLE_BUTTON, 2);str.LoadString(IDS_STOP);m_wndToolBar.SetButtonText(2, str);m_wndToolBar.SetButtonInfo(3,TBSTYLE_BUTTON, 3);str.LoadString(IDS_REFRESH);m_wndToolBar.SetButtonText(3, str)

11、;m_wndToolBar.SetButtonInfo(4,TBSTYLE_BUTTON, 4);str.LoadString(IDS_HOME);m_wndToolBar.SetButtonText(4, str);m_wndToolBar.SetButtonInfo(5,TBSTYLE_BUTTON, 5);str.LoadString(IDS_SEARCH);m_wndToolBar.SetButtonText(5, str);ID_GO_FORWARD,ID_VIEW_STOP,ID_VIEW_REFRESH,ID_GO_START_PAGE,ID_GO_SEARCH_THE_WEB,

12、m_wndToolBar.SetButtonInfo(6, ID_FAVORITES_DROPDOWN,TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 6);str.LoadString(IDS_FAVORITES);m_wndToolBar.SetButtonText(6, str);m_wndToolBar.SetButtonInfo(7, ID_FILE_PRINT,TBSTYLE_BUTTON, 7);str.LoadString(IDS_PRINT);m_wndToolBar.SetButtonText(7, str);m_wndToolBar.SetButto

13、nInfo(8, ID_FONT_DROPDOWN, TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 8); str.LoadString(IDS_FONT);m_wndToolBar.SetButtonText(8, str);/设置工具栏上的按钮尺寸和显示在按钮上的图标尺寸;CRect rectToolBar;m_wndToolBar.GetItemRect(0, &rectToolBar);m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(30,20);/创建组合框,用来作为地址栏;if (!m_wndAddress.C

14、reate(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1) TRACE0(Failed to create comboboxn);return -1; /创建动画控件对象,并打开 AVI 资源 IDR_MFCAVI ;m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 10,10), this, AFX_IDW_TOOLBAR + 2);m_wndAnimate.Open(IDR_MFCAVI);/将工具条、地址栏、动画控件等添加到 C

15、ReBar 对象中;m_wndReBar.AddBar(&m_wndToolBar);m_wndReBar.AddBar(&m_wndAnimate, NULL, NULL,RBBS_FIXEDSIZE | RBBS_FIXEDBMP);str.LoadString(IDS_ADDRESS);m_wndReBar.AddBar(&m_wndAddress, str, NULL,RBBS_FIXEDBMP | RBBS_BREAK);/再次设置工具条风格,使之有工具栏提示功能;m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_T

16、OOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED); /设置状态条;if (!m_wndStatusBar.Create(this)| !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT) TRACE0(Failed to create status barn);return -1; ./实现 Favorites 菜单的部分,该部分在第二部分介绍;return 0;(2 )工具条上的下拉菜单当用户点击按钮上的下拉箭头时, 将出现相应的菜单, 为了实现这个功能,手下需要在 CM

17、ainFrame.cpp 文件的消息映射中添加消息映射: ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR,OnDropDown) ;在 CmainFrame.h 文件中添加消息映射函数声明:afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT*pResult) ;最后添加下面的代码:void CMainFrame:OnDropDown(NMHDR* pNotifyStruct,LRESULT* pResult)NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;

18、 CRect rect;/得到下拉箭头的位置;m_wndToolBar.GetToolBarCtrl().GetRect(pNMToolBar-iItem,&rect);rect.top = rect.bottom;:ClientToScreen(pNMToolBar-hdr.hwndFrom, &rect.TopLeft(); if(pNMToolBar-iItem = ID_FONT_DROPDOWN)/判断是否为选择字体的下拉箭头;CMenu menu;CMenu* pPopup;menu.LoadMenu(IDR_FONT_POPUP);pPopup = menu.GetSubMenu

19、(0);pPopup-TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd(); else if(pNMToolBar-iItem = ID_FAVORITES_DROPDOWN)/判断是否为显示收藏网页的下拉箭头;CMenu* pPopup;pPopup = GetMenu()-GetSubMenu(3);pPopup-TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetM

20、ainWnd(); *pResult = TBDDRET_DEFAULT;3)工具条上的动画实现为了美化程序的界面,程序的复合工具条上放置了一个动画控件,用来在适当的时机播放一个动画片段, 实现动画效果。下面的代码实现了创建动画控件对象,并打开 AVI 资源 IDR_MFCAVI :m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 10,10), this, AFX_IDW_TOOLBAR + 2);m_wndAnimate.Open(IDR_MFCAVI);CanimateCtrl 类提供了 Play()、 Seek ()、Stop

21、 ()、 Close()等函数用来为播放视频文件服务,它们使用起来都非常简单,这里就不再赘述了。4)地址栏的操作当用户在地址栏上输入网页地址并按下回车键后, 浏览器将显示该网页的内容, 并将在地址栏中记录下该地址。 因为回车键按下后对应的消息 ID 为 IDOK ,为此,需要在 CmainFrame 类中添加消息映射 ON_COMMAND(IDOK, OnNewAddressEnter) 和消息响应函数afx_msg void OnNewAddressEnter() 。该函数实现代码如下:void CMainFrame:OnNewAddressEnter()CString str;/获取地址栏

22、中的字符串;m_wndAddress.GetEditCtrl()-GetWindowText(str);(CMfcieView*)GetActiveView()-Navigate2(str, 0, NULL);/ 显示该网页;/将该网址添加到地址栏对应的组合框中;COMBOBOXEXITEM item;item.mask = CBEIF_TEXT;item.iItem = -1;item.pszText = (LPTSTR)(LPCTSTR)str;m_wndAddress.InsertItem(&item);同理,还要在CmainFrame类中为地址栏(ID为AFX_IDW_TOOLBAR+

23、1 )添加 消 息映 射ON_CBN_SELENDOK(AFX_IDW_TOOLBAR +1,OnNewAddress)和消息响应函数 OnNewAddress ,用来处理用户从地址栏组合框中选择网址的操作,该函数的实现代码如下:void CMainFrame:OnNewAddress()CString str;m_wndAddress.GetLBText(m_wndAddress.GetCurSel(), str);(CMYIEView*)GetActiveView()-Navigate2(str, 0, NULL);二、实现收藏菜单一般 IE 的用户都有个习惯, 那就是将自己喜欢的网址保存

24、起来,以方便今后快速的登陆,为了使我们的浏览器能够显示 IE 收藏过的网址,程序中设置了一个 Favorites 菜单,通过 RegOpenKey ()、 RegQueryValueEx ( ) 等 函 数 操 作 Windows 的 注 册 表 中 的 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders 项,将收藏的网址显示到菜单上。为此,笔者定义了两个函数,实现代码如下所示:TCHAR GetDir( ) / 得到存放用户收藏网址的目录;TCHAR szMAX_PATH;TCHA

25、R szPathMAX_PATH;HKEY hKey;DWORD dwSize;CMenu* pMenu;/得到 Favorites 菜单,并删除空白的子菜单项;pMenu = GetMenu()-GetSubMenu(3); while(pMenu-DeleteMenu(0, MF_BYPOSITION);/find out from the registry where the favorites are located. if(RegOpenKey(HKEY_CURRENT_USER, _T(SoftwareMicrosoftWindowsCurrentVersionExplorerUs

26、erShell 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_PATH);RegCloseKey(hKey);Return szPathint CMainFrame:BuildFavoritesMenu(LPCTSTR pszP

27、ath, int nStartPos, CMenu* pMenu)CString strPath(pszPath);CString strPath2;CString str;WIN32_FIND_DATA wfd;HANDLE h;int nPos;int nEndPos;int nNewEndPos;int nLastDir;TCHAR bufINTERNET_MAX_PATH_LENGTH; CStringArray astrFavorites;CStringArray astrDirs;CMenu* pSubMenu;if(strPathstrPath.GetLength() - 1 !

28、= _T( )strPath += _T( );strPath2 = strPath;strPath += *.*;/扫描当前目录,首先搜索 *.URL 文件,然后是可能含有 *.URL 文件的子目录;h = FindFirstFile(strPath, &wfd);if(h != INVALID_HANDLE_VALUE)nEndPos = nStartPos;doif(wfd.dwFileAttributes&(FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FIL E_ATTRIBUTE_SYSTEM)=0)str = wfd.cFileName;if(str.Right(4) = _T(.url)/*URL 文件和 INI 文件格式类似,所以我们可以使用GetPrivatePr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1