在程序設(shè)計中,,如何設(shè)計出美觀、實用,,有個性的界面是每個程序設(shè)計者在界面設(shè)計中追求的目標,。隨著Windows XP的推出,各種與眾不同的華麗界面越來越被程序設(shè)計者和軟件使用者所認同,。 利用Windows中的WebBrowser控件,,可以把華麗的網(wǎng)頁設(shè)計技術(shù)應用到界面設(shè)計中去,例如微軟著名的MSN瀏覽器的許多界面其實就是一個Web頁,,Windows XP中的幫助中心,、Microsoft Encarta(微軟百科全書)等許多軟件中的一些界面也是利用WebBrowser控件顯示的Web頁。 利用WebBrowser控件顯示一個網(wǎng)頁,,制作一個簡單的瀏覽器已經(jīng)有很多文章介紹,,實現(xiàn)也不復雜,,但如何實現(xiàn)程序與Web頁的交互則是將其應用到界面設(shè)計中的關(guān)鍵,。 ActiveX控件和WebBrowser控件的使用 用 Visual Basic 創(chuàng)建一個應用程序的第一步是創(chuàng)建界面。而控件則是創(chuàng)建界面的基本模塊,,是包括在窗體對象內(nèi)的對象,。每種類型的控件都有自己的屬性、方法和事件,,屬性一般控制控件的外觀,、大小等性質(zhì),方法則是控件的能力或者功能,,事件則代表與用戶的交互,,例如鼠標的移動點擊、鍵盤的輸入等都會觸發(fā)相應的事件,。 WebBrowser控件是隨IE 3.0以上版本提供的一個可編程的ActiveX控件,,利用WebBrowser控件可以顯示、控制、分析Web頁,,除了IE,,chm格式的幫助的瀏覽,還廣泛應用在以IE為核心的許多瀏覽器和其他程序中,。 WebBrowser控件在VB中的使用很簡單,。啟動VB,創(chuàng)建一個標準EXE工程,,選擇工程——部件,,打開部件對話框,從中找到Microsoft Internet Controls,,選中后單擊應用,,然后關(guān)閉對話框(下圖),可以看到WebBrowser控件已經(jīng)添加到工具欄,。 將WebBrowser控件拖至窗體,,調(diào)整到相應大小,打開代碼窗口,,在Form_Load過程中鍵入如下代碼: Private Sub Form_Load() WebBrowser1.Navigate "http://www.sohu.com" End Sub 運行程序,,可以看到搜狐的主頁顯示在了相應的對話框中了。如果是本地的Web頁只需將http://www.sohu.com替換為本地文件的全路徑(目錄+文件名)就可以了,。 控制WebBrowser控件 利用WebBrowser控件的GoBack(后退),、GoForward(前進)、GoHome(主頁),、Navigate(定位),、Refresh(刷新)、Stop(停止)等方法,,可以實現(xiàn)瀏覽器的常規(guī)操作,。例如實現(xiàn)地址欄的操作,可以先向窗體添加一個文本框和按鈕,,并向按鈕的Click事件相應過程中添加如下代碼: Private Sub Command1_Click() WebBrowser1.Navigate Text1.Text End Sub 這樣,,向文本框輸入地址,單擊按鈕,,即可訪問不同的站點,。WebBrowser控件得其他操作方法類似,讀者可以參考MSDN的有關(guān)介紹,。 實現(xiàn)Web頁與程序的交互 要實現(xiàn)Web頁與程序的交互,,其關(guān)鍵在于改寫WebBrowser控件的BeforeNavigate2事件,截獲需要與程序交互的動作,,然后進行相應的操作,。例如,,我們在程序目錄下新建一個簡單的Web頁test.htm,其內(nèi)容如下: <HTML> <HEAD> <TITLE> Test </TITLE> </HEAD> <BODY> <A HREF=../../"test1.htm">test1</A><br> <A HREF=../../"test1.htm">test2</A> </BODY> </HTML> 在Form_Load過程中鍵入如下代碼: Private Sub Form_Load() WebBrowser1.Navigate App.Path & "\test.htm" End Sub 運行程序,,點擊test1或者test2則打開相應的test1.htm(如果test1.htm存在),,或者顯示文件找不到錯誤。那么如何截獲用戶點擊test1這個超鏈接呢,,我們在BeforeNavigate2這個事件中鍵入以下代碼: If Right(URL, 9) = "test1.htm" Then MsgBox "test1 clicked" Cancel = True '使WebBrowser控件停止相應此事件 ElseIf Right(URL, 9) = "test2.htm" Then MsgBox "test2 clicked" Cancel = True End If 運行程序,,可以看到程序已經(jīng)截獲了用戶點擊相應超鏈接的事件(注意:right函數(shù)的使用是為了只提取url的最后部分,因為url還包括網(wǎng)絡協(xié)議和目錄等信息),。這樣,,我們就可以在程序界面中使用Web頁來實現(xiàn)用戶界面,并通過截獲相應的點擊事件,,通過判斷相應的url,,得知用戶的操作,從而使程序進行不同的操作,。 換膚(SKIN)的實現(xiàn) 利用以上的程序設(shè)計思路,,我們來實現(xiàn)程序的換膚。因為程序的動作的處理集中在對WebBrowser控件BeforeNavigate2這個事件的處理上,,只與url的值有關(guān),,與Web頁的具體內(nèi)容和設(shè)計沒有關(guān)系,因此不但可以分離界面和程序的設(shè)計,,而且可以輕松的實現(xiàn)諸如換膚此類操作,。 具體實現(xiàn)辦法可以簡單敘述為以下幾步: 1. 制作幾個不同的Web頁,但要保證相應的超鏈接(url)一致,; 2. 在程序中設(shè)計一個換膚的操作,,切換當前WebBrowser所顯示的Web頁; 3. 在BeforeNavigate2中處理所有的動作,。 以下即為筆者設(shè)計的一個簡單示例的運行畫面,。如果將窗體設(shè)置為無標題欄,無邊框,,效果就會更佳,。 全部程序的代碼如下,,實現(xiàn)非常簡單,。 Option Explicit Private Sub Form_Load() WebBrowser1.Navigate App.Path & "\1.htm" End Sub Private Sub Option1_Click() WebBrowser1.Navigate App.Path & "\1.htm" End Sub Private Sub Option2_Click() WebBrowser1.Navigate App.Path & "\2.htm" End Sub Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) If Right(URL, 3) = "111" Then MsgBox "111 Clicked!" Cancel = True ElseIf Right(URL, 3) = "222" Then MsgBox "222 Clicked!" Cancel = True End If End Sub 結(jié)束語 在VB中實現(xiàn)與眾不同、具有個性界面的程序的辦法一般是使用各類界面控件,,或者通過調(diào)用WinAPI來實現(xiàn),,但一般來說很多漂亮的控件都是需要付費購買的,而通過編程實現(xiàn)都比較復雜,,且程序的修改,、維護也相應會很復雜,。 利用WebBrowser控件可以將界面設(shè)計和程序設(shè)計分離,對于交互較簡單的程序,,只需簡單編程即可實現(xiàn)一些其他方法較難實現(xiàn)的功能,,例如圖片按鈕、不規(guī)則按鈕,、動畫圖標等利用Web頁可以輕松實現(xiàn)的功能以及換膚等一般程序設(shè)計較難實現(xiàn)的功能,。利用本文提供的方法進行界面設(shè)計可以廣泛應用在各類多媒體程序的界面設(shè)計,以及程序中類似Office XP和Windows XP的任務窗格的設(shè)計,。 對于要進行輸入輸出等相對復雜任務的交互,,可以通過下面幾個方法思路來實現(xiàn): 1.將復雜的操作和交互集中起來,直接利用其他方法實現(xiàn)而不利用Web頁來實現(xiàn),。 2.程序的輸入:在Web頁的form設(shè)計中,,將提交操作的method設(shè)置為get,則用戶輸入內(nèi)容會出現(xiàn)在url中,,可以通過解析url獲取用戶輸入,,并進行相應動作。 3.程序的輸出:通過對顯示的Web頁的改寫實現(xiàn),。設(shè)計一個模板,,讀入此文件,應用Replace函數(shù)可以迅速將程序模板中的內(nèi)容替換為程序運算后的結(jié)果,。 |
|
來自: 戰(zhàn)神之家 > 《我的圖書館》