我的Web浏览器设计_第1页
我的Web浏览器设计_第2页
我的Web浏览器设计_第3页
我的Web浏览器设计_第4页
我的Web浏览器设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、计算机网络课程设计题目:WetU览器设计成员姓名:班级:指导教师:日期:20012年6月目录1、系统分析31.1 系统需求31.2 功能要求31.3 运行环境31.4 开发工具32、概要设计41 基本设计概念41 软件设计层次图53、详细设计6(1) web浏览器基本功能的实现6(1) 收藏夹功能设计10(1) 历史记录功能设计13(1) 抓图工具设计154、系统运行.255、设计总结29参考文献301、系统分析5.2.2. 系统需求浏览器是指可以显示网页服务器或者文件系统的HTMLC件内容,并让用户与这些文件交互的一种软件。网页浏览器主要通过HTTP议与网页服务器交互并获取网页,这些网页由U

2、RL旨定,文件格式通常为HTML并由MIMEfcHTTPa、议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,同时也越来越离不开浏览器,人们利用浏览器可以查看很多东西,上淘宝,需要浏览器,上百度搜索东西,需要浏览器,打开网站网址,需要浏览器。由此浏览器的种类也越来越多,如IE浏览器、谷歌浏览器、360浏览器、遨游浏览器等等。因此,浏览器对于人们的生活起着举足轻重的作用,浏览器的作用范围将不断扩大,人们的生活将离不开浏览器的使用。5.3.2. 功能要求使用ChtmlView类来实现一个应用程序,使之具有Web

3、浏览器的功能,包括浏览网页、前进、后退、返回主页、刷新、搜索、收藏夹、历史记录、抓图、删除等功能。5.4.2. 运行环境本系统基于Windows平台设计,适用于Windows系歹!J的系统,如流行的WindowsXP、WindowsVista等。5.5.2. 开发工具:VC+6.0C程序开发软件;2、概要设计基本设计概念利用已有的HTTP空制、HTM邮释器和HTM映行器,通过MFO供的CHtmlView类实现的一个Windows下的多功能的浏览器。该浏览器的功能包括:WEB占点浏览、本地和网络的文件系统的浏览、前进、后退、返回主页、刷新、搜索、历史记录的维护、IE收藏夹功能和设置桌面快捷方式功

4、能等。2.2软件设计层次图系统流程图:当用户登录此简易浏览器时,需要在地址栏输入需要搜索的内容的网址,当输入网址后,该浏览器会链接到相应的URL地址,实现页面的下载,并显示页面,从而实现该简易浏览器连接网络的功功能结构图:该程序的设11主要分5部分。首先是登录界面的实现,其中要创建按钮,创建菜单栏及下拉菜单的实现;第二部分要实现各按钮的具体的功能包括在其中设置监听器,实现对按钮动作的监听及响应;第三部分用于对地址栏输入内容格式的设定包括如何处理异常等;第四部分实现页面的下载;第五部分用于实现页面的显示。具体的功能结构图如下:web浏览器登功URL下显录能连载示界按接链链面钮实接接实实现页页现现

5、面面3、详细设计web浏览器基本功能(前进、后退、停止、刷新、搜索、主页)的实现:利用MFCAppWizard生成应用程序框架创建工程名为HtmlView。第一步,选择工程类型为单文档(SDI),中文语言支持。第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持;第四步选择InternetExplorerReBars工具栏的风格,这样就有了用来输入网址的文本框;第五步不做任何修改;第六步选择CHtmlView类作为视图类的基类。生成工程框架包含4个类。(1)应用程序类:CHtmlViewApp对应HtmlView.h和HtmlView.cpp文件。框架类:CMainFrame对应

6、MainFrm.h和MainFrm.cpp文件。文档类:HtmlViewDoc,对应HtmlViewDoc.h和HtmlViewDoc.cpp文件。HtmlView类:CHtmlViewView,对应CHtmlViewView.h和CHtmlViewView.cpp文件。此时编译运行,程序已经具有基本的WebM览功能,能自动链接到微软公司的网站。修改菜单在工作区中选择“ResourceView”选项卡,选择Menu双击菜单控件的名字(IDR_MAINFRAME右边出现程序的菜单。选择菜单中的“查看”命令,已经有了“工具栏”和“状态栏”两个条目,双击下面的空框,弹出设置菜单条目属性对话框,按照表

7、添加菜单项:菜单条目名称(Caption)ID号前进ID_FOWARD后退IDBACK停止ID_STOP刷新ID_REFRESH主页ID_HOME搜索ID_SEARCH修改工具栏:在工作区中选择“ReaourcecView”选项卡,选择ToolBar,双击工具条控件的名字(IDR_MAINFRAME右边出现程序的工具条。添加如图的新的按钮图样。他们的ID号与相应的菜单条目相同。使他们的ID号与相应的菜单条目的ID号相同。口客屋名跑1O昌督哈可4©添加控件事件处理函数:进入类向导,选择“MessageMaps选项卡。在“ClassName”下拉列表框中选择CHtmlViewView类,

8、然后按照表为控件添加事件处理函数对象IDMessagesMemberFunctionID_FORWARDCOMMANDOnFoward()ID_BACKCOMMANDOnBack()ID_STOPCOMMANDOnStop()ID_REFRESHCOMMANDOnRefresh()ID_HOMECOMMANDOnHome()ID_SEARCHCOMMANDOnSearch()添加事件处理函数代码:在CHtmlViewView.cpp实现文件中,添加上述6个时间处理函数的代码。voidCHtmlViewView:OnBack()GoBack();后退;voidCHtmlViewView二OnFo

9、rward()GoForward();/前进;voidCHtmlViewView:OnHome()GoHome();/主页;voidCHtmlViewView:OnStop()Stop();/停止;voidCHtmlViewView:OnRefresh()Refresh();OnOldlogins();刷新;voidCHtmlViewView二OnSearch()GoSearch();/搜索;添加URL定位功能:(1)添加网址输入栏控件。在工作区中选择“ResourceView”选项卡,选才?Dialog,双击对话框控件的名字(IDR_MAINFRAME右边出现对话框条。在上面添加一个“请输入

10、地址”的静态文本,再添加一个组合框控件,ID号设为IDC_EDIT_ADDRESS乍为地址栏,提供给用户输入要浏览的网站地址。如图所示。"WJJ*"-,*"*.*,"*1*J*J.*JJ1iirii请输入地址:H3-ti.1«Jw,,一i*wj»*.”i>wuW-"Ji%w'u.uw$11.w'W'd'UMwuiwwu«wj(2)添加控制代码。当用户输入网址后按回车时,就有一个IDOK的消息发送到主框架类,添加处理这个消息的控制函数,在该函数中,用指定的网址调用Navigate

11、()和Navigate2()函数,就可以实现对该网页的浏览。在MainFrm.h文件中,添加消息处理函数的声明。public:voidOnInputAddress();在MainFrm.cpp文件中,添加该函数的实现代码。voidCMainFrame二OnInputAddress()/当用户输入Web®址并且回车CStringsWebAddress;/从编辑框获取用户输入的We州址m_wndDlgBar.GetDlgItem(IDC_EDIT_ADDRESS)->GetWindowText(sWebAddress);/浏览相应的网页(CHtmlView*)GetActiveVi

12、ew()->Navigate(sWebAddress);在MainFrm.cpp的文件中,在消息映射(MESSAGE_MAP中添加自己的消息映射宏。ON_COMMAND(IDOK,OnInputAddre§s)解决单击超级链接时地址栏的同步问题:利用CHtmlView类的事件处理函数,当网页下载完成,会触发OnDocumentComplete()函数,该函数的参数就是所下载网页的URL可以利用此函数对地址栏进行设置,添加以下代码。在MainFrm.h文件中,添加处理函数的声明。public:voidSetURL(LPCTSTRlpszURL);在MainFrm.cpp文件中,添

13、加该函数的实现代码。voidCMainFrame:SetURL(LPCTSTRlpszURL)m_wndDlgBar.GetDlgItem(IDC_EDIT_ADDRESS)->SetWindowText(lpszURL);m_wndDlgBar.GetDlgItem(IDC_shortcutname)->SetWindowText(lpszURL);使用类向导添加事件处理函数。用类向导为应用程序的CHtmlViewView类添加OnDocumentComplete(LPCTSTRlpszURL)1件处理函数,并在myWeb16View.cpp文件中添加它的实现代码。voidCHt

14、mlViewView:OnDocumentComplete(LPCTSTRlpszURL)/每次当前页面改变,更新地址栏的内容和窗口的标题(CMainFrame*)GetParentFrame()->SetURL(lpszURL);GetDocument()->SetTitle(lpszURL);CHtmlView:OnDocumentComplete(lpszURL);收藏夹功能设计:3.2.1.修改菜单:在菜单中加入“收藏夹”栏。宜梏出骈芭看乜帮助QD收而去s)控制M历史登录弄即图剧展L.创建“收藏夹”:在主框架类的创建函数:OnCreate(LPCREATESTRUCTIpC

15、reateStruct)实现代码中添加如下代码(与菜单中“收藏夹”子菜单相对应,同时与IE浏览器的注册表相连):生成“我的收藏夹”子菜单TCHARszMAX_PATH;/260TCHARszPathMAX_PATH;260HKEYhKey;DWORDdwSize;CMenu*pMenu;/开始消去存在的菜单pMenu=GetMenu()->GetSubMenu(4);while(pMenu->DeleteMenu(0,MF_BYPOSITION);0X00000400L从注册表中找到“我的收藏夹的位置”,然后读写注册表if(RegOpenKey(HKEY_CURRENT_USER,

16、_T("SoftwareMicrosoftWindowsCurrentVersionExplorerUserShellFolders"),&hKey)!=ERROR_SUCCESS)TRACE0("Favoritesfoldernotfound'n");return0;dwSize=sizeof(sz);RegQueryValueEx(hKey,_T("Favorites"),NULL,NULL,(LPBYTE)sz,&dwSize);ExpandEnvironmentStrings(sz,szPath,MAX

17、_PATH);RegCloseKey(hKey);添加我的收藏菜单项BuildFavoritesMenu(szPath,0,pMenu);在主框架类CMainFrame中添力口BuildFavoritesMenu()函数实现收藏夹的收藏功'匕目匕:a.在MainFrm.h中声明intBuildFavoritesMenu(LPCTSTRpszPath,intnStartPos,CMenu*pMenu)函数实现添加我的收藏菜单项;b在MainFrm.cpp中实现BuildFavoritesMenu()的功能,具体实现代码如下:intCMainFrame:BuildFavoritesMenu

18、(LPCTSTRpszPath,intnStartPos,CMenu*pMenu)CStringstrPath(pszPath);CStringstrPath2;CStringstr;WIN32_FIND_DATAwfd;HANDLEh;intnPos;intnEndPos;intnNewEndPos;intnLastDir;TCHARbuf2048;CStringArrayastrFavorites;CStringArrayastrDirs;CMenu*pSubMenu;/确定有''字符if(strPathstrPath.GetLength()-1!=_T(''

19、;)strPath+=_T('');strPath2=strPath;strPath+="*.*"/首先扫描.URL然后扫描子目录h=FindFirstFile(strPath,&wfd);if(h!=INVALID_HANDLE_VALUE)nEndPos=nStartPos;doif(wfd.dwFileAttributes&(FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM)=0)str=wfd.cFileName;if(str.Right(4)=_

20、T(".url")/an.URLfileisformattedjustlikean.INIfile,sowecan/useGetPrivateProfileString()togettheinformationwewant:GetPrivateProfileString(_T("InternetShortcut"),_T("URL"),_T(""),buf,2048,strPath2+str);str=str.Left(str.GetLength()-4);/scanthroughthearrayandperfor

21、maninsertionsort/tomakesurethemenuendsupinalphabeticorderfor(nPos=nStartPos;nPos<nEndPos;+nPos)if(str.CompareNoCase(astrFavoritesnPos)<0)break;)astrFavorites.InsertAt(nPos,str);m_astrFavoriteURLs.InsertAt(nPos,buf);+nEndPos;)while(FindNextFile(h,&wfd);FindClose(h);/Nowaddtheseitemstothemen

22、ufor(nPos=nStartPos;nPos<nEndPos;+nPos)pMenu->AppendMenu(MF_STRING|MF_ENABLED,0xe00+nPos,astrFavoritesnPos);/nowthatwe'vegotallthe.URLfiles,checkthesubdirectoriesformorenLastDir=0;h=FindFirstFile(strPath,&wfd);ASSERT(h!=INVALID_HANDLE_VALUE);doif(wfd.dwFileAttributes&FILE_ATTRIBUTE

23、_DIRECTORY)/ignorethecurrentandparentdirectoryentriesif(lstrcmp(wfd.cFileName,_T(".")=0|lstrcmp(wfd.cFileName,_T(".")=0)continue;for(nPos=0;nPos<nLastDir;+nPos)if(astrDirsnPos.CompareNoCase(wfd.cFileName)>0)break;pSubMenu=newCMenu;pSubMenu->CreatePopupMenu();/callthisfun

24、ctionrecursively.nNewEndPos=BuildFavoritesMenu(strPath2+wfd.cFileName,nEndPos,pSubMenu);if(nNewEndPos!=nEndPos)/onlyintertasubmenuifthereareinfact.URLfilesinthesubdirectorynEndPos=nNewEndPos;pMenu->InsertMenu(nPos,MF_BYPOSITION|MF_POPUP|MF_STRING,(UINT)pSubMenu->m_hMenu,wfd.cFileName);pSubMenu

25、->Detach();astrDirs.InsertAt(nPos,wfd.cFileName);+nLastDir;deletepSubMenu;)while(FindNextFile(h,&wfd);FindClose(h);returnnEndPos;在MainFrm.h中声明函数voidOnFavorite(UINTnID)实现当在收藏夹中单击相应的网址时,将该网址在浏览器中显示;a在MainFrm.cpp中的消息映射表中添加ON_COMMAND_RANGE(0xe00,0xfff,OnFavorite)消息响应;b.在MainFrm.cpp中实现OnFavorite(U

26、INTnID)的功能,具体代码如下:voidCMainFrame:OnFavorite(UINTnID)(CHtmlViewView*)GetActiveView()->Navigate2(m_astrFavoriteURLsnID-0xe00,0,NULL);.历史记录功能设计:.修改菜单,在菜单中加入“历史记录”栏,将ID号设为:ID_OLDLOGINS。文性田洛事国查看如用的回收夹t5】按胤闻而史酹制京m图他於匚二MenuItemProperties叵中号GtheralExlendedStyles|(:ID_OLDLOGINS三plion;厮史.录SeparatorPup-uplo

27、aclNe旦re占k:fKlone.CheckedgrayedHelpPmnipt:登录记录.在HtmlViewView.h中添加历史记录处理函数afx_msgvoidOnOldlogins(),并在HtmlViewView.cpp中实现该功能,代码如下:voidCHtmlViewView:OnOldlogins()历史记录(CMainFrame*)GetParentFrame()->HistoryScan();.在CMainFrame类中添加函数HistoryScan()实现将最近登录网址添加到“历史记录”子菜单中。具体代码如下:intCMainFrame:HistoryScan()c

28、harbuffer256;定义一个流式文件;ifstreamcfile("History.txt");if(!cfile.is_open()(AfxMessageBox(_T("文件打开失败!");)/得到“历史记录”子菜单的句柄;pMenu1=GetMenu()->GetSubMenu(6);while(pMenu1->DeleteMenu(0,MF_BYPOSITION);0X00000400Lwhile(!cfile.eof()(/获取一个历史记录网址;cfile.getline(buffer,100);if(buffer=NULL)(

29、continue;)将获取的网址添加到历史记录链表中;m_astrHistoryURLs.InsertAt(m_number,buffer);将网址添加到历史记录子菜单内;pMenu1->AppendMenu(MF_STRING|MF_ENABLED,0x001+m_number+,buffer);)return1;).在CMainFrame类中添加函数HistoryScanSave(),实现将历史记录保存到History.txt文件中;具体代码如下:voidCMainFrame:HistoryScanSave()(if(file.Open(_T("History.txt&qu

30、ot;),CFile:modeCreate|CFile:modeWrite)(由文件末尾开始写;file.SeekToEnd();file.Write(addr.GetBuffer(addr.GetLength()+1),addr.GetLength()+1);addr.ReleaseBuffer();file.Close();)elseAfxMessageBox(_T("文件打开失败!");).在MainFrm.h中声明函数voidOnHistory(UINTnID)实现当在历史记录菜单中单击相应的网址时,将该网址在浏览器中显示;a.在MainFrm.cpp中的消息映射表

31、中添加ON_COMMAND_RANGE(0x001,0xdfe,OnHistory)消息响应;b.在MainFrm.cpp中实现OnHistory(UINTnID)的功能,具体代码如下:voidCMainFrame:OnHistory(UINTnID)当单击历史记录内某一网址时,将该网址在浏览器中显示;(CHtmlViewView*)GetActiveView()->Navigate2(m_astrHistoryURLsnID-0x001,0,NULL);).在MainFrm.cpp中的SetURL()函数中添加代码实现将当前网址添加到历史记录菜单中,具体代码如下:将地址栏内的地址存起来

32、,作为历史记录;addr+=lpszURL;addr+="r'n"HistoryScanSave();3.4抓图工具的实现:在以设计好的WebM览器中的菜单栏里添加一个“屏幕截图”,下设一个截图功能为它添加消息响应函数voidCHtmlViewView二OnScreensnap()/TODO:Addyourcommandhandlercodehere/屏幕截图消息响应函数*SetCapture();/启动全屏捕捉m_bStartSnapWindow=TRUE;/m_Description.SetWindowText("正在进行抓图,");Show

33、Window(SW_MINIMIZE);m_nTimerID=SetTimer(1,300,NULL);/启动定时器,开始抓取图像)注册系统热键,用来抓图RegisterHotKey(GetSafeHwnd(),WM_SNAPHOTKEY,NULL,VK_F3);在HtmlViewView类中添加函数toClipboard实现将指定窗口复制到系统剪切板,当中用到了双缓冲技术:voidCHtmlViewView:toClipboard(CWnd*wnd,BOOLFullWnd)CDC*dc;if(FullWnd)dc=newCWindowDC(wnd);/抓取整个窗口elsedc=newCCli

34、entDC(wnd);/抓取客户区域CDCmemDC;memDC.CreateCompatibleDC(dc);CBitmapbm;CRectr;if(FullWnd)wnd->GetWindowRect(&r);elsewnd->GetClientRect(&r);CStrings;wnd->GetWindowText(s);CSizesz(r.Width(),r.Height();bm.CreateCompatibleBitmap(dc,sz.cx,sz.cy);CBitmap*oldbm=memDC.SelectObject(&bm);memDC

35、.BitBlt(0,0,sz.cx,sz.cy,dc,0,0,SRCCOPY);/直接调用OpenClipboard(),而不用wnd->CetParent()->OpenClipboard();wnd->OpenClipboard();二EmptyClipboard();二SetClipboardData(CF_BITMAP,bm.m_hObject);CloseClipboard();/回复原始环境memDC.SelectObject(oldbm);bm.Detach();deletedc;在HtmlViewView类中添加函数CaptureWindowToClipboa

36、rd实现抓取图像到系统剪切板:boolCHtmlViewView:CaptureWindowToClipboard(HWNDhwndToCapture)boolbRet=FALSE;/如果“hwndToCapture”是有效窗口的话,将其复制到系统剪切板中if(hwndToCapture)&&(:IsWindow(hwndToCapture)(bRet=TRUE;toClipboard(CWnd*)CWnd:FromHandle(hwndToCapture),TRUE);returnbRet;在HtmlViewView类中添加函数HighlightFoundWindow实现高度

37、显示选中的图像窗口:longCHtmlViewView二HighlightFoundWindow(HWNDhwndFoundWindow)HDChWindowDC=NULL;HGDIOBJhPrevPen=NULL;HGDIOBJhPrevBrush=NULL;RECTrect;longIRet=0;HPENhRectanglePen=CreatePen(PS_SOLID,3,RGB(255,0,0);二GetWindowRect(hwndFoundWindow,&rect);获取选中窗口的DChWindowDC=:GetWindowDC(hwndFoundWindow);if(hWi

38、ndowDC)/选取自定义的高亮矩形画笔hPrevPen=SelectObject(hWindowDC,hRectanglePen);/选取自定义的高亮画刷hPrevBrush=SelectObject(hWindowDC,GetStockObject(HOLLOW_BRUSH);/再选中的图像窗口四周绘制高亮矩形Rectangle(hWindowDC,0,0,rect.right-rect.left,rect.bottom-rect.top);/恢复原始画笔画刷SelectObject(hWindowDC,hPrevPen);SelectObject(hWindowDC,hPrevBrush

39、);/释放DC:ReleaseDC(hwndFoundWindow,hWindowDC);/删除创建的矩形画笔if(hRectanglePen)DeleteObject(hRectanglePen);returnIRet;在HtmlViewView类中添加函数RefreshWindow实现刷新选中的图像窗口,消除高度显示:longIRet=0;:InvalidateRect(hwndWindow,NULL,TRUE);:UpdateWindow(hwndWindow);二RedrawWindow(hwndWindow,NULL,NULL,RDW_FRAME|RDW_INVALIDATE|RDW

40、_UPDATENOW|RDW_ALLCHILDREN);returnIRet;在HtmlViewView类中添加函数CheckWindowValidity实现检验选中窗口的有效性:boolCHtmlViewView:CheckWindowValidity(HWNDhwndToCheck)HWNDhwndTemp=NULL;boolbRet=TRUE;/不能为空if(hwndToCheck=NULL)bRet=FALSE;returnbRet;/必须是一个有效窗口if(IsWindow(hwndToCheck)=FALSE)bRet=FALSE;returnbRet;/确定他不是先前选中的窗口i

41、f(hwndToCheck=m_hwndFoundWindow)bRet=FALSE;returnbRet;/不能是程序主窗口if(hwndToCheck=this->m_hWnd)bRet=FALSE;returnbRet;/不能是程序中的子窗口hwndTemp=:GetParent(hwndToCheck);if(hwndTemp=this->m_hWnd)bRet=FALSE;returnbRet;returnbRet;添加热键消息处理函数OnHotKey,先在.h文件的消息映射区手动添加一个消息处理函数声明:afx_msgLRESULTOnHotKey(WPARAMwPar

42、am,LPARAMIParam图:protected:/<<AFJ!_MSC(CHtrilUiewUiew)afxnsgafxnsgafx_nsgafxnsgafxnsgaFxnsgafx_nsgafxnsg肝uoiduoiduoiduoidvoiduoiduoiduoidvoidOnBacl();OnForwardf);OnHoine();口nStop();OnRefreshO;DnSearchf);OnOldloglnsO;OnScreensnap():OnTiiwr(UINTnIDEvent);afxjisgLRESULIOnH口tKe9(阳ARRMwPard%LPaRnM】

43、Param);3.4.10然后添加消息函数实现:afx_nsguoidOnDestroyO;/>>AFX_MSEDECLAREMESSAGEMAPOLRESULTCHtnLViewUiew:OnHotKej)(UPAHAMuParan,LPARAHIParan)if(uParam=WHSNAPHOTKEV)“当正在抓取操作时选中窗作为假时器,则刷新它(ifiCnbStartSnapUinddu)ReleaseCapture();mbStartSnapUinddu-FALSE;Kiinimer(n_nTinerI);iF(mhwndFoundUindo)ReFreshUindoufn

44、JiundFaundnindDu);CaptureNlndouToCLipboard(nhundFnundWindnu);,将选中的窗口复制到剪切板申Sleep(5SB);ShowWindow(SW_SHDM);恢艮窗口正常显示"n_Dc"rLpH(n.St血血血肚已成功将送B的图像复制到系统剪切板中!returnB;3.4.11在ClassWizard中为CScreenSnapDlag添加OnTimer事件处理函数,然后添加实现。voidCHtmlViewView:OnTimer(UINTnIDEvent)/TODOAddyourmessagehandlercodeher

45、eand/orcalldefaultif(m_bStartSnapWindow)当正在抓取操作时POINTCursorPoint;HWNDhwndFoundWindow=NULL;GetCursorPos(&CursorPoint);/从当前鼠标所在点位置获取器窗口句柄hwndFoundWindow=二WindowFromPoint(CursorPoint);/检验选中窗口的石效性if(CheckWindowValidity(hwndFoundWindow)/如果先前有选中的窗口,则刷新它,以消除他的高亮显示if(m_hwndFoundWindow)RefreshWindow(m_hw

46、ndFoundWindow);/得到选中窗口的句柄m_hwndFoundWindow=hwndFoundWindow;/_HighlightFoundWindow(m_hwndFoundWindow);)一)CHtmlView:OnTimer(nIDEvent);)3.4,12对程序作最后的处理OnDestroy函数实现:当正在抓取操作时平时中选屏歌有全已果如voidCHtmlViewView:OnDestroy()if(m_bStartSnapWindow)/ReleaseCapture();/mbStartSnapWindow=FALSE;/KiTTTimer(m_nTimerID);/i

47、f(mhwndFoundWindow)/RefreshWindow(m_hwndFoundWindow)RegisterHotKey(GetSafeHwnd(),WM_SNAPHOTKEY,NULL,VK_F3);CHtmlView:OnDestroy();/TODO:Addyourmessagehandlercodehere)删除功能设计:.添加“删除”菜单:在工作区中选择"ResourceView”选项卡,选择Menu,双击菜单控件的名字(IDR_MAINFRAME),右边出现程序的菜单。在菜单中加入“删除”栏,分别添加“清空历史记录”、“清空收藏夹”、“删除文档历史记录”、“清

48、除Cookies”、“清除Internet临时文件”和“清除密码历史记录”6个菜单条目及其属性。二U手圜甚(英叫|恒云孱哮皆力会中那如用嗓裆文编辑(£)首春M都助时收藏天(5)拄制(M)历史登录屏幕探圜删除清史历史已录群删除文档历史记录清除Cddkie清除Intern曰:崎时文件清除空码历史记录菜单名称ID号清空历史记录ID_DelHistoryAddress清空收臧火ID_DELETEFAVORITE删除文档历史记录ID_DelHistory消除CookieID_DelCookies清除Internet临时文件ID_DelIntenetTempFile消除密码历史记录ID_DelH

49、istoryPassword添加事件处理函数:进入类向导,选择"MessageMapS'选项卡。在"ClassNam省下拉列表框中选择CMyWeb16View类,然后按照表2.4为上述删除的六个控件添加事件处理函数。ID号Messages函数名ID_DelHistoryCOMMANDOnDelHistory()ID_DelCookiesCOMMANDOnDelCookies()ID_DelIntenetTempFileCOMMANDOnDelIntenetTempFile()ID_DelHistoryAddressCOMMANDOnDelHistoryAddress

50、()ID_DELETEFAVORITECOMMANDOnDeletefavorite()ID_DelHistoryPasswordCOMMANDOnDelHistoryPassword()函数实现:(1)实现文档历史记录的清除voidCMyWeb16View:OnDelHistory()/清除文档历史记录TCHARszPathMAX_PATH;if(SHGetSpecialFolderPath(NULL,szPath,CSIDL_RECENT,FALSE)EmptyDirectory(szPath);SHDeleteKey(HKEY_CURRENT_USER,_T("Software

51、MicrosoftCurrentVersionExplorerRecentDocs");(2)清除CookievoidCMyWeb16View:OnDelCookies()/清除CookiesTCHARszPathMAX_PATH;DeleteUrlCache(Cookie);/删除URL的Cacheif(SHGetSpecialFolderPath(NULL,szPath,CSIDL_COOKIES,FALSE)EmptyDirectory(szPath);)(3)清除Internet的临时文件voidCMyWeb16View:OnDelIntenetTempFile()/清空In

52、ternet临时文件(TCHARszPathMAX_PATH;DeleteUrlCache(File);/删除URL的Cacheif(SHGetSpecialFolderPath(NULL,szPath,CSIDL_INTERNET_CACHE,FALSE)/得到临时目录并清空它EmptyDirectory(szPath);)(4)清空历史记录voidCMyWeb16View:OnDelHistoryAddress()CMainFrame*pMainFrame=(CMainFrame*)GetActiveWindow();pMainFrame->OndeleteHistory();)(5

53、)清除密码历史纪录voidCMyWeb16View二OnDelHistoryPassword()/清除密码历史记录SHDeleteKey(HKEY_CURRENT_USER,_T("SoftwareMicrosoftInternetExplorerIntelliForms");)(6)清空收藏夹:voidCHtmlViewView:OnDeletefavorite()ExplorerUserShellFolders");)桌面快捷方式设计:添加按钮:修改对话框控件(IDR_MAINFRAMK添加按钮“创建快捷方式”与编辑框,编辑框ID号为:IDC_shortcut

54、name;按钮ID号为:IDC_SHORTCUT,对应函数为:OnShortcut();实现代码:voidCMainFrame:OnShortcut()CStringpp;获得用户在地址栏中输入的URLm_wndDlgBar.GetDlgItem(IDC_EDIT_ADDRESS)->GetWindowText(pp);CStringpp1;/获得用户在地址栏中输入的URLm_wndDlgBar.GetDlgItem(IDC_shortcutname)->GetWindowText(pp1);IShellLink*MyLink;/IShellLink接口指针IPersistFile*ppf;/另一个接口指针charDesktopLocateMAX_PATH;/存储快捷方式在桌面保存的位置/桌面的位置SHGetSpecialFolderPath(NULL,DesktopLocate,CSIDL_DESKTOP,0);/以下设定快捷方式在桌面保存位置strcat(DesktopLocate,"");strcat(DesktopLocate,pp1);strcat(DesktopLocate,".LNK");CoIni

温馨提示

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

评论

0/150

提交评论