VisualBasicforWindowss3.0(簡稱VB)是目前開發WINDOWS應用軟體最有效的工具之一,它綜合運用了BAIC語言和新的視覺化設計工具,不僅功能強大,而且簡單易學。其次,VB具有事件驅動的程式設計機制,它充分利用WINDOWS圖形環境的特點,能讓開發人員快速建構強大的應用程式。
那麼在開發VB應用軟體時,如何充分擴充VB的功能呢?這就要求在不同的層次上要善用VB最具威力和特色的部分:
●在函數層呼叫動態連結庫。
●在控制層使用VBX。 ●在應用程式層執行其他應用程式。
一、在函數層呼叫功能態連結庫(DLL)
WINDOWS作業系統其實是由許多功能強大的動態連結程式庫(DLL)組合而成。 VB考慮到有些工作超過自身語言所及的能力範圍,所以提供了直接呼叫作業系統中這些DLL子程式的能力。例如:在正常情況下,視窗的控制選單提供了七種功能:還原、移動、大小、最小化、最大化、關閉和切換。而在實際應用中,我們希望窗口按設計時的大小顯示,不允許用戶隨意改變窗口大小,也不允許切換到其他窗口,這就要求在設計時必須刪除控制菜單中除“移動”和“關閉”選項以外的所有控制選單項目。要完成這個任務,我們首先可把窗體的MaxButton屬性和MinButton屬性設為False,不允許窗體最小化和最大化,窗體也就不能還原。然後再把窗體的Bordersstyle屬性設定為1-FixedSingle或3-FixedDouble,不允許窗體改變大小。但VB本身卻無法刪除「切換」選項和兩條分隔線。幸運的是,透過呼叫WINDOWSDLL就很容易做到。
通常,要使用WINDOWSDLL,首先必須說明要使用的DLL子程序,我們可在兩個地方說明所使用的DLL子程序,即在全域模組中說明,或在窗體層的說明部分中說明。其格式為:
DeclareSub子程式名稱Lib「庫名」[Alias「別名」][([參數])]
DeclareFunction子程式名稱Lib「庫名」[Aliass「別名」][([參數])][AS資料型別]
第一種格式表示程序沒有傳回值,第二種格式表示程序傳回一個值,該值可用於表達式中,庫名如果用的是WINDOWS操作環境(在System目錄下)中的函式庫,如「USER .EXE”,“KERNEL.EXE”或“GDI.EXE”等,就用此名稱作為庫名。如果用的是其他來源的DLL,則用包含路徑的檔案名稱(如:「C:\WINDOWS\BRUSH.DLL」)。別名(Alias)是允許另外使用別的名稱來稱呼子程序,尤其是當外來子程序名與VB保留字相同時,它就顯得特別有用,參數指要被傳遞到子程序的參數值,數據類型指的是函數傳回值的資料類型,它可能是Integer,Long,Single,Double,Currency或String。以下就是所要使用的DLL子程式的說明:
DeclareFunctionGetSystemMenu%Lib"User"(ByValhWnd%,ByValbRevert%)
Declare\function\RemoveMenu%Lib"User"(ByValhMenu%,ByValnPosition%,ByValwFlags%)
當說明完DLL子程式後,執行DLL子程式的方法,就像在VB中執行通用過程(函數)一樣。下面我們寫一個名為Remove-Items-From-System的過程來完成上面範例中提到的功能,過程中呼叫了上述說明過的兩個DLL子程式:
Subremove-Items-From-Sysmenu(A-FormAsForm)
'取得窗體系統選單句炳
HSysMenu=GetSystemMenu(A-Form.hWnd,0)
'刪除除「移動」和「關閉」外的所有選單項,刪除時必須從最後一個選單項目開始
R=RemoveMenu(HSysMenu,8,MF-BYPOSITION)'刪除切換
R=RemoveMenu(HSysMenu,7,MF-BYPOSITION)'刪除第一條分隔線
R=RemoveMenu(HSysMenu,5,MF-BYPOSITION)'刪除第二條分隔線
EndSub
有了這個過程,在任一窗體的Form-Load事件中加入下面一行程式碼就可以刪除該窗體除「移動」和「關閉」選項以外的所有控制選單項目:
Remove-Items-From-SysmenuMe
二、在控制層使用VBX
VB功能強大的第二部分是VBX的使用,即其開放及無限擴增的特性。雖然VB工具箱(ToolBox)已經盡量將設計應用軟體所需的工具包括在內,但是,為了不斷擴充VB的功能,VB提供了一套開發工具(CustomControlDevelopmentKit)供第三方開發者來設計所需要的控件。當設計完控制檔後(其檔案副檔名為「.VBX」)可以從選單「file」項目下選「AddFile...」指令,結果畫面上出現"AddFile"對話框,雙擊所需的VBX檔案名稱即可將該VBX加入VB中,這些控制項裝入VB後,VB會將這些外來控制項加到原有工具箱中,與其他控制項合併使用。正是因為有了這項技術,VB才能夠不斷發展,使用VB編程也更為方便、迅速和有效,這是VB區別於其他程式開發環境的主要特色之一。自從VB推出以來,第三方軟體公司設計了大量的新控件,以下是開發WINDOWS應用程式時幾個非常有用的VBX:
●三維控制Threed.vbx
它提供了包括命令按鈕、複選框、單選鈕、框架、下推按鈕和麵板在內的六種三維控件,使用這些控件可使窗體更具有立體感。
●圖形控制Graph.vbx
向圖形控制項傳送資料後,圖形控制項可繪製二維或三維圓餅圖,、直方圖、趨勢圖,並且可以列印或拷貝到剪貼簿上。
●通訊控制Mscomm.vbx
它提供了串行通訊的能力,可用於串行埠之間傳送和接收資料。
●資料網格控制項Truegrid.vbx
它既可以作為一般的資料顯示表格,也可把一個資料庫和一個網格連結起來,它是製作資料庫瀏覽器或資料顯示的理想工具。
二、在應用層執行其他應用程式
在編制複雜的大型軟體時,我們經常需要有一些功能相對獨立和完善的專用程序,如編輯程序,而這些程序通常是通用和流行並經實踐檢驗的。如果由開發者重新編制這些程序,不僅大大增加了程序工作量以及調試過程,而且功能上很難比得上這些通用程序。顯然,如果我們能直接呼叫這些程式是最理想的。令人欣喜的是,VB提供了一個可用於呼叫其他應用程式的Shell函數,使VB的某些功能可直接由其他應用程式來完成,從而大大減少了程式設計任務。
格式是Shell(指令字串[,視窗類型])
其中的命令字串是想要執行的應用程式名,可執行檔的副檔名僅限於“.COM”,“.EXE”,“.BAT”,“.PIF”,缺省擴展名為.EXE文件,視窗類型是一整數值,它對應於程式執行時的顯示視窗風格,是可選的,共有下列5種選擇:
視窗類型值
視窗類型1,5,9
正常窗口,具有指針2
最小窗口,具有指針(缺省)3
最大窗口,具有指針4,8
正常窗口,無指針6,7
最小窗口,無指針
當Shell函數成功地呼叫某一個應用程式時,會傳回一個任務識別碼(TaskID),該ID表示正在執行的程式的唯一識別。
[例]
X=Shell("C:\WINDOWS/NOTEPAD.EXE",1)
此語句呼叫WINDOWS附件中的記事本NOTEPAD.EXE作為編輯程式來使用,並傳回1個ID值到X。 ->