- 相關(guān)推薦
通信網(wǎng)絡(luò)設(shè)計(jì)課程設(shè)計(jì)簡單瀏覽器的設(shè)計(jì)(一)
設(shè)計(jì)要求:I1.簡單瀏覽器的設(shè)計(jì)
環(huán)境要求:Windows95/98/2000/XP/2000,校園網(wǎng),程序語言自定
功能要求:要編寫能瀏覽網(wǎng)頁的程序。
1.前言
1.1相關(guān)背景知識(shí)介紹
網(wǎng)頁瀏覽器是日常中人們上網(wǎng)時(shí)所必須的應(yīng)用軟件之一,在多年以前瀏覽器市場(chǎng)里還存在著網(wǎng)景公司的Netscape與微軟公司的Internet Explorer兩大巨頭之間的競(jìng)爭(zhēng),然而,隨著個(gè)人電腦的迅速普及以及Windows操作系統(tǒng)占領(lǐng)了絕大部分市場(chǎng)(而Windows中又捆綁著IE瀏覽器),微軟的這一壟斷性的行為導(dǎo)致現(xiàn)如今,就只剩下IE了。當(dāng)然隨著用戶需求的不斷提高,,目前很多公司和個(gè)人都開發(fā)出了比較不錯(cuò)的瀏覽器,例如,美觀實(shí)用的傲游(MYIE)、小巧玲瓏的Opera以及騰訊公司開發(fā)出來的TT瀏覽器等,都受到了許多使用者的青睞。
1.2 文章概要及程序設(shè)計(jì)思路
1.2.1 文章內(nèi)容概述
本文以Visual Basic 6.0封裝的IE核心控件—WebBrowser為中心,闡述以及探討網(wǎng)頁瀏覽器編程的基本技巧和思路,并實(shí)現(xiàn)一個(gè)具有多頁面顯示功能的網(wǎng)頁瀏覽器,并且它能夠?qū)棾鍪降拇翱诓蹲皆跒g覽器內(nèi)。在文章中將以程序代碼的各大模塊為主要線索,解釋并分析部分原代碼,而完整的原代碼將加在附錄里。最后,再將本次畢業(yè)設(shè)計(jì)的成果與現(xiàn)在被廣泛運(yùn)用的瀏覽器做比較,總結(jié)這次設(shè)計(jì)工作的得失。
1.2.2瀏覽器的功能簡述
本文中所實(shí)現(xiàn)的網(wǎng)頁瀏覽器將會(huì)具有以下六大功能:
(1)能夠進(jìn)行基本的網(wǎng)絡(luò)導(dǎo)航,例如前進(jìn)、后退、刷新、停止等等。
(2)在瀏覽器內(nèi)實(shí)現(xiàn)搜索功能。
(3)查看歷史瀏覽記錄。
(4)進(jìn)行收藏夾管理。
(5)各種屬性設(shè)置,如最小化到收藏夾、主頁設(shè)置等。
(6)設(shè)置IE瀏覽器的各項(xiàng)屬性。
(7)進(jìn)行頁面打印,并設(shè)置打印屬性
2.編譯原理
在計(jì)算機(jī)的各種編程語言中,作為第四代編程語言的Visual Basic,不僅容易學(xué)習(xí)和掌握,而且其自身的功能非常強(qiáng)大。在Visual Basic 6.0中,編寫網(wǎng)頁瀏覽器,最簡單的方法就是直接使用Visual Basic提供的網(wǎng)頁控件WebBrowser,在本次設(shè)計(jì)中也是使用的它,這個(gè)ActiveX控件和Windows操作系統(tǒng)所自帶的瀏覽器使用的是同一個(gè)內(nèi)核,即IE內(nèi)核。
該控件的屬性、方法和事件:
方法 說明
GoBack 相當(dāng)于IE的“后退”按鈕,使你在當(dāng)前歷史列表中后退一項(xiàng)
GoForward 相當(dāng)于IE的“前進(jìn)”按鈕,使你在當(dāng)前歷史列表中前進(jìn)一項(xiàng)
GoHome 相當(dāng)于IE的“主頁”按鈕,連接用戶默認(rèn)的主頁
GoSearch 相當(dāng)于IE的“搜索”按鈕,連接用戶默認(rèn)的搜索頁面
Navigate 連接到指定的URL
Refresh 刷新當(dāng)前頁面
Refresh2 同上,只是可以指定刷新級(jí)別,所指定的刷新級(jí)別的值來自RefreshConstants枚舉表, 該表定義在ExDisp.h中,可以指定的不同值如下: REFRESH_NORMAL 執(zhí)行簡單的刷新,不將HTTP pragma: no-cache頭發(fā)送給服務(wù)器 REFRESH_IFEXPIRED 只有在網(wǎng)頁過期后才進(jìn)行簡單的刷新 REFRESH_CONTINUE 僅作內(nèi)部使用。在MSDN里寫著DO NOT USE! 請(qǐng)勿使用 REFRESH_COMPLETELY 將包含pragma: no-cache頭的請(qǐng)求發(fā)送到服務(wù)器
Stop 相當(dāng)于IE的“停止”按鈕,停止當(dāng)前頁面及其內(nèi)容的載入
屬性 說明
Application 如果該對(duì)象有效,則返回掌管WebBrowser控件的應(yīng)用程序?qū)崿F(xiàn)的自動(dòng)化對(duì)象(IDispatch)。如果在宿主對(duì)象中自動(dòng)化對(duì)象無效,這個(gè)程序?qū)⒎祷豔ebBrowser 控件的自動(dòng)化對(duì)象
Parent 返回WebBrowser控件的父自動(dòng)化對(duì)象,通常是一個(gè)容器,例如是宿主或IE窗口
Container 返回WebBrowser控件容器的自動(dòng)化對(duì)象。通常該值與Parent屬性返回的值相同
Document 為活動(dòng)的文檔返回自動(dòng)化對(duì)象。如果HTML當(dāng)前正被顯示在WebBrowser中,則 Document屬性提供對(duì)DHTML Object Model的訪問途徑
TopLevelContainer 返回一個(gè)Boolean值,表明IE是否是WebBrowser控件頂層容器,是就返回true
Type 返回已被WebBrowser控件加載的對(duì)象的類型。例如:如果加載.doc文件,就會(huì)返 回Microsoft Word Document
Left 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口左邊的距離
Top 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口頂邊的距離
Width 返回或設(shè)置WebBrowser窗口的寬度,以像素為單位
Height 返回或設(shè)置WebBrowser窗口的高度,以像素為單位
LocationName 返回一個(gè)字符串,該字符串包含著WebBrowser當(dāng)前顯示的資源的名稱,如果資源 是網(wǎng)頁就是網(wǎng)頁的標(biāo)題;如果是文件或文件夾,就是文件或文件夾的名稱
LocationURL 返回WebBrowser當(dāng)前正在顯示的資源的URL
Busy 返回一個(gè)Boolean值,說明WebBrowser當(dāng)前是否正在加載URL,如果返回true 就可以使用stop方法來撤銷正在執(zhí)行的訪問操作
事件 說明
BeforeNavigate2 導(dǎo)航發(fā)生前激發(fā),刷新時(shí)不激發(fā)
CommandStateChange 當(dāng)命令的激活狀態(tài)改變時(shí)激發(fā)。它表明何時(shí)激活或關(guān)閉Back和Forward 菜單項(xiàng)或按鈕
DocumentComplete 當(dāng)整個(gè)文檔完成是激發(fā),刷新頁面不激發(fā)
DownloadBegin 當(dāng)某項(xiàng)下載操作已經(jīng)開始后激發(fā),刷新也可激發(fā)此事件
DownloadComplete 當(dāng)某項(xiàng)下載操作已經(jīng)完成后激發(fā),刷新也可激發(fā)此事件
NavigateComplete2 導(dǎo)航完成后激發(fā),刷新時(shí)不激發(fā)
NewWindow2 在創(chuàng)建新窗口以前激發(fā)
OnFullScreen 當(dāng)FullScreen屬性改變時(shí)激發(fā)。該事件采用VARIENT_BOOL的一個(gè)輸 入?yún)?shù)來指示IE是全屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)
OnMenuBar 改變MenuBar的屬性時(shí)激發(fā),標(biāo)示參數(shù)是VARIENT_BOOL類型的。 VARIANT_TRUE是可見,VARIANT_ FALSE是隱藏
OnQuit 無論是用戶關(guān)閉瀏覽器還是開發(fā)者調(diào)用Quit方法,當(dāng)IE退出時(shí)就會(huì)激發(fā)
OnStatusBar 與OnMenuBar調(diào)用方法相同,標(biāo)示狀態(tài)欄是否可見。
OnToolBar 調(diào)用方法同上,標(biāo)示工具欄是否可見。
OnVisible 控制窗口的可見或隱藏,也使用一個(gè)VARIENT_BOOL類型的參數(shù)
StatusTextChange 如果要改變狀態(tài)欄中的文字,這個(gè)事件就會(huì)被激發(fā),但它并不理會(huì)程序是否有狀態(tài)欄
TitleChange Title有效或改變時(shí)激發(fā)
3程序原代碼詳解
3.1程序模塊介紹
本文中的網(wǎng)頁瀏覽器系統(tǒng)包括以下十個(gè)主要的模塊文件:
1 網(wǎng)頁瀏覽器.frm 瀏覽器的主窗體,用于顯示網(wǎng)頁內(nèi)容以及菜單和工具欄。
2 Module1.bas,用于聲明各種常用的文件處理函數(shù)。
3.2.1整體介紹
包括本文中的程序在內(nèi)的任何瀏覽器的開發(fā)中,其核心技術(shù)都利用了微軟公司提供的一個(gè)瀏覽器控件—WebBrowser。在Visual Basic 6.0中該控件不是默認(rèn)就在工具箱里,需要用戶自己將它調(diào)出了,先選擇Visual Basic 6.0菜單中的“工程”—>“部件”,在彈出的對(duì)話框中選擇“Microsoft Internet Controls”,然后點(diǎn)擊“運(yùn)用”后“確定”(如下圖3—2)。該控件就會(huì)以一個(gè)小地球的圖標(biāo)出現(xiàn)在工具欄里。這樣就可以接著完成后面的編程工作。
主窗體圍繞著WebBrowser控件共有70多個(gè)屬性,而其中的事件更是達(dá)上百個(gè),也是可見它在整個(gè)程序中的重要性。
3.2.2 PageSetup事件
“PageSetup”菜單單擊事件的功能是如下圖3—4所示的頁面設(shè)計(jì)。
Private Sub mnu_PageSetup_Click ()
brwWebBrowser (TabStrip1.Tabs (CurTab_Index).Tag).ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT
End Sub
3.2.3 “Find On this Page”事件
“Find On this Page”菜單單擊事件,彈出當(dāng)前所瀏覽網(wǎng)頁內(nèi)部查找對(duì)話框。
Private Sub mnu_EditFind_Click ()
On Error GoTo mnu_EditFind_Click_Error:
SetFocusOnly = True
TabStrip1.SetFocus
brwWebBrowser (TabStrip1.Tabs(CurTab_Index).Tag).SetFocus
SendKeys "^f"
Exit Sub
mnu_EditFind_Click_Error:
ShowErrorMessageBox ("mnu_EditFind_Click")
End Sub
3.2.4 AddToFavorites函數(shù)
AddToFavorites函數(shù),將當(dāng)前瀏覽的網(wǎng)頁添加到收藏夾。
Private Sub mnu_AddToFavorites_Click ()
On Error GoTo mnu_AddToFavorites_Click_Error:
Call AddToFavorites
Exit Sub
mnu_AddToFavorites_Click_Error:
ShowErrorMessageBox ("mnu_AddToFavorites_Click")
End Sub
3.2.5“Internet Options”事件
“Internet Options”菜單單擊事件代碼,用于設(shè)置IE的屬性。
Private Sub mnu_InterNetOptions_Click ()
Dim RetVal
RetVal = Shell ("rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl", vbNormalFocus)
End Sub
3.4瀏覽器多頁面顯示和捕捉彈出窗口在瀏覽器內(nèi)構(gòu)想
支持多頁面顯示和捕捉彈出窗口在瀏覽器內(nèi)。這兩個(gè)功能是IE瀏覽器所不具備的,而實(shí)現(xiàn)這兩個(gè)功能的關(guān)鍵是brwWebBrowser_NewWindow2事件和NewTab、SetTabCaption兩個(gè)函數(shù)。在brwWebBrowser_NewWindow2事件中“Call NewTab (Me, URL, -99)”調(diào)用了NewTab函數(shù),目的就是首先建立一個(gè)TAB。
可以通過SSTAB這個(gè)控件來完成顯示多網(wǎng)頁的功能的,因此當(dāng)有一個(gè)新的網(wǎng)頁需要顯示的時(shí)候,就需要新建一個(gè)TAB,而不是另外彈出一個(gè)窗口。而SetTabCaption函數(shù)的作用就是來設(shè)置TAB標(biāo)題。
4.各種瀏覽器比較
在瀏覽器市場(chǎng)中,由于各方面的原因IE一直都占據(jù)著龍頭老大的地位,所以在比較中就以IE作為藍(lán)本。Opera瀏覽器可以縮放網(wǎng)頁的大小比例、調(diào)整網(wǎng)頁中的圖像、全屏瀏覽等等。傲游Maxthon游覽器中可以鏈接打開一些系統(tǒng)工具。騰訊TT也可以縮放網(wǎng)頁的大小比例。這些都是我值得學(xué)習(xí)的地方,有點(diǎn)遺憾的是,本人的瀏覽器中不能查看網(wǎng)頁源碼,這是今后需要改進(jìn)的。對(duì)于瀏覽網(wǎng)頁安全的設(shè)置方面,Opera、傲游和騰訊TT比IE更直觀,更便于用戶根據(jù)自己的實(shí)際情況來調(diào)整。另外,它們?nèi)叨伎梢愿鼡Q軟件皮膚,使瀏覽器更加靚麗,而由于設(shè)計(jì)時(shí)間有限,在作品中來不及實(shí)現(xiàn)這個(gè)功能。
它們?nèi)叨记度肓讼鄳?yīng)的搜索鏈接,例如,傲游里嵌入了百度搜索。這個(gè)功能對(duì)于在當(dāng)今這個(gè)內(nèi)容紛雜繁多的網(wǎng)絡(luò)世界里快速高效的尋找到用戶自己想要的資源是非常重要的,是很人性化的設(shè)計(jì)。這也是值得我學(xué)習(xí)的。另外,騰訊TT可以根據(jù)用戶的IP地址判斷用戶所在的地區(qū),再把該地區(qū)兩天的天氣發(fā)送到用戶端來,在瀏覽器底部顯示。而且騰訊TT中還添加有多線程的颶風(fēng)下載器,可以加快用戶下載資源的速度。
Opera、傲游和騰訊TT都是可以支持多頁面顯示的;但在捕捉彈出窗口功能卻略有差異,騰訊TT默認(rèn)允許彈出窗口,在窗口下過濾此頁、過濾類似的網(wǎng)頁、過濾全部彈出窗口的選擇,這也是因?yàn)椴皇敲總(gè)彈出的窗口都是廣告,有些是網(wǎng)站的重要公告。傲游在這方面做的稍差點(diǎn),對(duì)于彈出的窗口只是像IE那樣先阻止再詢問的處理方式。而Opera在這方面是把彈出窗口捕捉在瀏覽器內(nèi)部,只不過它首先還是阻止窗口,然后顯示提示用戶操作窗口,如果用戶無動(dòng)作瀏覽器將默認(rèn)為阻止了該彈出窗口。
【通信網(wǎng)絡(luò)設(shè)計(jì)課程設(shè)計(jì)簡單瀏覽器的設(shè)計(jì)(一)】相關(guān)文章:
課程設(shè)計(jì)報(bào)告07-20
施工組織設(shè)計(jì)課程設(shè)計(jì)開題報(bào)告07-13
小學(xué)美術(shù)傳統(tǒng)節(jié)日單元課程設(shè)計(jì)探析論文05-09
論通信設(shè)計(jì)質(zhì)量的科學(xué)控制方法論文11-11
網(wǎng)絡(luò)通信技術(shù)的作用03-30
C語言程序設(shè)計(jì) (一)05-11
畢業(yè)設(shè)計(jì)夾具設(shè)計(jì)開題報(bào)告09-02
設(shè)計(jì)企業(yè)設(shè)計(jì)人員考勤管理思考05-04
基于電話網(wǎng)絡(luò)的熱網(wǎng)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)05-11