top
Loading...
使用插件功能擴展VB

一、插件介紹

從結構上來看,一個VB插件實際上是一個COM組件,原則上組件可以使用支持COM的開發工具,例如Delphi、VC來編寫。組件通過實現COM中的IDTExtensibility對象來建立與VB的連接。組件注冊以后,當VB運行中在Add-In菜單中裝載組件后,VB就會調用組件中IDTExtensibility對象中的相應方法(如在裝載組件后會調用OnConnection方法)。這時整個插件就成為VB的一部分從而可以訪問VB開發環境中的各種對象和資源了。

利用VB本身來編寫插件是一個很好的辦法,首先通過VB可以快速建立一個IDTExtensibility對象框架(當然在VB中不叫這個名稱);其次VB對于整個開發環境都提供了相應的對象供插件訪問和控制,而使用插件的主要目的就是通過插件來控制宿主程序;最后是調試十分的方便,可以直接運行看結果,不需要編譯注冊。

二、建立程序框架

首先我們來建立程序框架,以下的代碼和說明都是使用Win2K+VB6中文企業版完成的,在VB英文版以及Win9X下運行通過只是程序中對于界面的說明根據不同的VB會有不同。

打開VB,點擊菜單中的文件|新建項,在 新建工程 窗口中選擇“外接程序” 項(在英文版中是Addin),然后點擊確定按鈕建立插件工程。

建立完畢后在工程列表窗口中可以看到新工程的名稱為MyAddIn。其中包含兩個對象,在窗體類中包含frmAddIn窗體,在設計器類中包含Connect設計器對象。VB已經為插件設立了一個基本框架,下面按F5運行插件并將VB主窗口最小化。然后再打開一個VB程序,在其中建立一個標準 Exe工程。點擊菜單的 外接程序 | 外接程序管理器 項。在打開的外接程序管理器窗口的列表中可以看到其中有一個My Add-In 項,點擊該項,然后將下面 加載行為(英文版中是Load Behavior) 區域中的三個復選框都選中后點擊確定按鈕裝載插件。然后再點擊“外接程序” 菜單,再點擊其中新添加的 My AddIn 項。可以看到插件彈出一個窗體,點擊“確定”按鈕可以獲得VB運行的目錄,點擊“取消”按鈕關閉窗體。

接下來再次打開外接程序管理器窗口。選中 My Add-In項,將 加載行為 區域中的三個復選框中的對勾去掉。然后回到運行插件的VB程序,點擊停止按鈕停止插件的執行。

回到插件工程中,我們主要來看Connect對象,打開Connect對象的代碼窗口。可以看到其中包含兩個對象:AddinInstance和MenuHandler。其中AddInstance是工程中實現同VB接口的對象。在程序中對應AddInstance包含兩個方法:OnConnection和OnDisconnection。在這里我們稱它們為方法而不是事件,是因為它們是由VB調用而不是由某個消息引發而由系統調用的。

OnConnection方法在插件裝載使被調用,其中的參數Application是調用插件的VB實例對象。這個對象是一個VBE類對象。由VB傳遞給插件插件就可以通過Application對象訪問和控制調用自己的VB實例。其中比較重要的是這一段:

If ConnectMode = ext_cm_External Then
Me.Show
Else
Set mcbMenuCommandBar = AddToAddInCommandBar("AddInSample")
Set Me.MenuHandler = VBInstance. Events. CommandBarEvents (mcbMenuCommandBar)
End If

在上面的程序段中,首先通過ConnectMode來判斷插件被裝載的方式,如果是不是通過外部程序啟動的話,首先調用AddToAddInCommandBar方法添加一個菜單項到 外接程序 菜單欄。

添加了菜單項后,插件程序還必須能夠響應對菜單的點擊做響應,VB支持插件對自身的很多事件監控,包括點擊菜單、工具欄按鈕、打開工程、添加/刪除工程中的文件等等。對應每一種事件,VB實例都包含有一個相應的事件對象。對象可以通過VB實例對象的Events屬性獲得或者設置。在插件程序中可以事先定義一個事件對象并編寫好對象的事件響應代碼,然后將該對象賦予VB實例對象中的相應事件對象。在上面的程序中,需要插件監控對添加的菜單項的點擊事件,那么首先在程序中首先定義了一個With Events的對象MenuHandler。并在程序中編寫對象的Click事件代碼,然后在OnConnection方法中用
Set Me.MenuHandler = VBInstance.Events.CommandBarEvents(mcbMenuCommandBar)
將MenuHandler設定為建立的菜單對象的事件對象,那么當在VB中點擊 My Add-In項后,VB就會調用MenuHandle的Click事件代碼。

現在MX顯卡已經可以說是和當年的TNT2系列一樣的太火了,不論哪個廠,只要有點生產能力的已經都在出MX芯片的顯卡了。今天阿甘就又看到了一款新品牌的MX顯卡。這個牌子的名字非常的羅曼帝克,叫Dream(夢牌)。我不知道說的是MX顯卡是玩友心中的夢呢,還是廠商以爭錢為自己心中的夢(這里只是說笑而已,請廠商不要見氣)。此夢牌MX顯卡有兩款,都是采用的GF2 MX芯片,所有同的是SDRAM的速度有5.5ns和6ns兩種,顯存的牌子都是韓國現代(HY)的,它們的售價分別為750元和800元。在這個MX顯卡早已是到處都有,價格戰已起的今天,這個價位的雜牌產品應該是不會太有競爭力的了,從顯卡的做工來看也未達到這個價位顯卡的水平,看來它也只可以是個夢了。新盛電腦/賽博二樓B5、B6/68790932

【責任編輯:ST飄飄】
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗