明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

如何充分擴充VB技巧

[摘要]Visual Basic for Windowss3.0(簡稱VB)是目前開發(fā)WINDOWS應用軟件的最有效工具之一,它綜合運用了BAIC語言和新的可視化設計工具,不僅功能強大,而且簡單易學。其次,VB具有事件驅(qū)動的編程機制,它充分利用WINDOWS圖形環(huán)境的特點,能讓開發(fā)人員快速地構(gòu)造強大的應用...
Visual Basic for Windowss3.0(簡稱VB)是目前開發(fā)WINDOWS應用軟件的最有效工具之一,它綜合運用了BAIC語言和新的可視化設計工具,不僅功能強大,而且簡單易學。其次,VB具有事件驅(qū)動的編程機制,它充分利用WINDOWS圖形環(huán)境的特點,能讓開發(fā)人員快速地構(gòu)造強大的應用程序。
那么在開發(fā)VB應用軟件時,如何充分地擴充VB的功能呢?這就要求在不同的層次上要很好地利用VB最具威力和特色的部分:
●在函數(shù)層調(diào)用動態(tài)鏈接庫。
●在控件層使用VBX。●在應用層執(zhí)行其他應用程序。
一、在函數(shù)層調(diào)用功能態(tài)鏈接庫(DLL)
WINDOWS操作系統(tǒng)實際上是由許多功能強大的動態(tài)鏈接庫(DLL)組合而成。VB考慮到有些工作超過自身語言所及的能力范圍,所以提供了直接調(diào)用操作系統(tǒng)中這些DLL子程序的能力。例如:在正常情況下,窗口的控制菜單提供了七種功能:還原、移動、大小、最小化、最大化、關(guān)閉和切換。而在實際應用中,我們希望窗口按設計時的大小顯示,不允許用戶隨意改變窗口大小,也不允許切換到其他窗口,這就要求在設計時必須刪除控制菜單中除“移動”和“關(guān)閉”選項以外的所有控制菜單項。要完成這一任務,我們首先可把窗體的MaxButton屬性和MinButton屬性設置為False,不允許窗體最小化和最大化,窗體也就不能還原。然后再把窗體的BorderSstyle屬性設置為1-Fixed Single或3-Fixed Double,不允許窗體改變大小。但VB本身卻無法刪除“切換”選項和兩條分隔線。幸運的是,通過調(diào)用WINDOWS DLL就很容易做到。
通常,要使用WINDOWS DLL,首先必須說明要使用的DLL子程序,我們可在兩個地方說明所使用的DLL子程序,即在全局模塊中說明,或者在窗體層的說明部分中說明。其格式是:
Declare Sub子程序名Lib“庫名”[Alias“別名”][([參數(shù)])]
Declare Function子程序名Lib“庫名”[Aliass“別名”][([參數(shù)])][AS數(shù)據(jù)類型]
第一種格式表示過程沒有返回值,第二種格式表示過程返回一個值,該值可用于表達式中,庫名如果用的是WINDOWS操作環(huán)境(在System目錄下)中的庫,如“USER.EXE”,“KERNEL.EXE”或者“GDI.EXE”等,就用此名作為庫名。如果用的是其他來源的DLL,則用包括路徑的文件名稱(如:“C:\WINDOWS\BRUSH.DLL”)。別名(Alias)是允許另外使用別的名稱來稱呼子程序,尤其是當外來子程序名與VB保留字相同時,它就顯得特別有用,參數(shù)指要被傳遞到子程序的參數(shù)值,數(shù)據(jù)類型指的是函數(shù)返回值的數(shù)據(jù)類型,它可能是Integer,Long,Single,Double,Currency或String。下面就是所要使用的DLL子程序的說明:
Declare Function GetSystemMenu% Lib"User"(ByValhWnd%,ByValbRevert%)
Declare \function \RemoveMenu% Lib"User"(ByValhMenu%,ByValnPosition%,ByValwFlags%)
當說明完DLL子程序后,執(zhí)行DLL子程序的方法,就象在VB中執(zhí)行通用過程(函數(shù))一樣。下面我們編寫一個名為Remove-Items-From-System的過程來完成上面例子中提到的功能,過程中調(diào)用了上述說明過的兩個DLL子程序:
Sub remove-Items-From-Sysmenu(A-Form As Form)
注釋:獲取窗體系統(tǒng)菜單句炳
HSysMenu=GetSystemMenu(A-Form.hWnd,0)
注釋:刪除除“移動”和“關(guān)閉”外的所有菜單項, 刪除時必須從最后一個菜單項開始
R=RemoveMenu(HSysMenu,8,MF-BYPOSITION) 注釋:刪除切換
R=RemoveMenu(HSysMenu,7,MF-BYPOSITION) 注釋:刪除第一條分隔線
R=RemoveMenu(HSysMenu,5,MF-BYPOSITION) 注釋:刪除第二條分隔線
End Sub
有了這個過程,在任一窗體的Form-Load事件中加入下面一行代碼就可以刪除該窗體除“移動”和“關(guān)閉”選項以外的所有控制菜單項:
Remove-Items-From-Sysmenu Me
二、在控件層使用VBX
VB功能強大的第二個部分是VBX的使用,即其開放及無限擴增的特性。雖然VB工具箱(ToolBox)已經(jīng)盡量將設計應用軟件所需的工具包括在內(nèi),但是,為了不斷擴充VB的功能,VB提供了一套開發(fā)工具(Custom Control Development Kit)供第三方開發(fā)者來設計所需要的控件。當設計完控件文件后(其文件擴展名為“.VBX”)可以從菜單“file”項下選“Add File...”命令,結(jié)果畫面上出現(xiàn)一個"Add File"對話框,雙擊所需的VBX文件名即可將該VBX加入到VB中,這些控件裝入VB后,VB會將這些外來控件加到原有工具箱中,與其他控件一起合并使用。正是因為有了這一技術(shù),VB才能夠不斷發(fā)展,使用VB編程也更為方便、迅速和有效,這是VB區(qū)別于其他程序開發(fā)環(huán)境的主要特色之一。自從VB推出以來,第三方軟件公司設計了大量的新控件,下面是開發(fā)WINDOWS應用程序時幾個非常有用的VBX:
●三維控件Threed.vbx
它提供了包括命令按鈕、復選框、單選鈕 、框架、下推按鈕和面板在內(nèi)的六種三維控件,使用這些控件可使窗體更具有立體感。
●圖形控件Graph.vbx
向圖形控件發(fā)送數(shù)據(jù)后,圖形控件可繪制二維或三維餅圖,、直方圖、趨勢圖,并且可以打印或拷貝到剪貼板上。
●通訊控件Mscomm.vbx
它提供了串行通訊的能力,可用于串行端口之間傳送和接收數(shù)據(jù)。
●數(shù)據(jù)網(wǎng)格控件Truegrid.vbx
它既可以作為一般的數(shù)據(jù)顯示表格,也可把一個數(shù)據(jù)庫和一個網(wǎng)格聯(lián)系起來,它是制作數(shù)據(jù)庫瀏覽器或數(shù)據(jù)顯示的理想工具。
二、在應用層執(zhí)行其他應用程序
在編制復雜的大型軟件時,我們經(jīng)常會需要有一些功能相對獨立和完善的專用程序,如編輯程序,而這些程序通常是通用和流行并經(jīng)實踐檢驗的。如果由開發(fā)者重新編制這些程序,不僅大大增加了程序工作量以及調(diào)試過程,而且功能上很難比得上這些通用程序。顯然,如果我們能直接調(diào)用這些程序是最為理想的。令人欣喜的是,VB提供了一個可用來調(diào)用其他應用程序的Shell函數(shù),使VB的某些功能可直接由其他應用程序來完成,從而大大地減少了編程任務。
格式是Shell(命令字符串[,窗口類型])
其中的命令字符串是欲執(zhí)行的應用程序名,可執(zhí)行文件的擴展名只限于“.COM”,“.EXE”,“.BAT”,“.PIF”,缺省擴展名為.EXE文件,窗口類型是一整數(shù)值,它對應于程序執(zhí)行時的顯示窗口風格,是可選 的,共有下列5種選擇:
窗口類型值
窗口類型 1,5,9
正常窗口,具有指針 2
最小窗口,具有指針(缺。 3
最大窗口,具有指針 4,8
正常窗口,不具指針 6,7
最小窗口,不具指針
當Shell函數(shù)成功地調(diào)用某一個應用程序時,返回一個任務標識(Task ID),該ID表示正在執(zhí)行的程序的唯一標識。
[例]
X=Shell("C:\WINDOWS/NOTEPAD.EXE",1)
該語句調(diào)用WINDOWS附件中的記事本NOTEPAD.EXE作為編輯程序來使用,并返回1個ID值到X。