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。->