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