以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://m.martymets.com/bbs/index.asp) -- C++語(yǔ)言開(kāi)發(fā) (http://m.martymets.com/bbs/list.asp?boardid=63) ---- 增強(qiáng)Visual C++開(kāi)發(fā)環(huán)境_VC技術(shù)_C語(yǔ)言教程 (http://m.martymets.com/bbs/dispbbs.asp?boardid=63&id=2435) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-10 15:05:00 -- 增強(qiáng)Visual C++開(kāi)發(fā)環(huán)境_VC技術(shù)_C語(yǔ)言教程 程序和軟件都是使用它來(lái)開(kāi)發(fā)出來(lái)的。VC的開(kāi)發(fā)環(huán)境提供了強(qiáng)大的功能,為開(kāi)發(fā)人員方便、快速、高效地開(kāi)發(fā)應(yīng)用給予了強(qiáng)有力的支持。但是由于程序員各有各的特點(diǎn)和習(xí)慣,所以還可能會(huì)有很多對(duì)編程開(kāi)發(fā)環(huán)境不同的需要。VC的IDE集成開(kāi)發(fā)環(huán)境充分考慮到了這一點(diǎn),專(zhuān)門(mén)提供了對(duì)開(kāi)發(fā)環(huán)境進(jìn)行擴(kuò)展的功能,使得開(kāi)發(fā)員可以根據(jù)需要,通過(guò)一些編程開(kāi)發(fā)來(lái)增強(qiáng)VC開(kāi)發(fā)環(huán)境本身的功能。 Visual C++的自動(dòng)化機(jī)制 VC提供了一種Automation自動(dòng)化(來(lái)自以前的OLE自動(dòng)化)的擴(kuò)展機(jī)制。VC的開(kāi)發(fā)者可以通過(guò)開(kāi)發(fā)VBScript宏或者插件,讓IDE來(lái)自動(dòng)執(zhí)行一些操作。好處是顯然的:可以大大縮短這些操作的時(shí)間,而且還可以避免在手工操作可能出現(xiàn)的一些錯(cuò)誤,如遺漏、鍵入錯(cuò)誤等等。VBScript宏是使用VBScript語(yǔ)言寫(xiě)的一些程序,而插件則是使用VC或者Visual Basic開(kāi)發(fā)的COM構(gòu)件。 我們還可以使用VBScript宏和插件來(lái)對(duì)VC本身的界面進(jìn)行美化、改造,例如為VC的窗口加上頁(yè)簽(與Delphi的界面類(lèi)似)等等。 在宏或者插件里,VC的集成開(kāi)發(fā)環(huán)境本身以及它的各個(gè)部件都可以作為對(duì)象來(lái)進(jìn)行操作。例如,通過(guò)操作與項(xiàng)目的文件對(duì)應(yīng)的對(duì)象,可以對(duì)某個(gè)文件進(jìn)行打開(kāi)、編輯和關(guān)閉等操作。類(lèi)似的,操作與IDE中的窗口對(duì)應(yīng)的對(duì)象,可以激活一個(gè)窗口、改變窗口的大小等等。 一個(gè)對(duì)象可以是集成開(kāi)發(fā)環(huán)境的一個(gè)部件,或者一組相關(guān)的部件。例如,一個(gè)Document文件對(duì)象表示一個(gè)打開(kāi)的文件,而Documents對(duì)象則表示所有打開(kāi)的文件。類(lèi)似,一個(gè)Window窗口對(duì)象表示一個(gè)打開(kāi)的窗口,而Windows對(duì)象表示所有打開(kāi)的窗口。Documents和Windows對(duì)象稱(chēng)為集合對(duì)象,它們包含了相關(guān)的一組對(duì)象。 每一個(gè)IDE環(huán)境的對(duì)象都實(shí)現(xiàn)了一個(gè)雙向的接口,提供了大量的方法、屬性和事件,在開(kāi)發(fā)VBScript宏和插件的時(shí)候需要使用這些方法、屬性和事件來(lái)操作這些對(duì)象。同時(shí),每一個(gè)對(duì)象為Automation機(jī)制實(shí)現(xiàn)了一個(gè)IDispatch接口和一個(gè)COM接口,來(lái)支持對(duì)對(duì)象成員(屬性、方法和事件)的訪問(wèn)。 為了更好地操作集成開(kāi)發(fā)環(huán)境的對(duì)象,必須知道這些對(duì)象之間的關(guān)系。對(duì)象之間有一個(gè)層次包含的關(guān)系。Application對(duì)象是最頂層的,其它的對(duì)象都是從屬于它的。有了這個(gè)關(guān)系,就可以使用Application對(duì)象的屬性和方法來(lái)直接訪問(wèn)它的所有下屬對(duì)象啦!VC集成開(kāi)發(fā)環(huán)境的對(duì)象以及它們之間的包含關(guān)系如下: 例如,Breakpoints對(duì)象有一個(gè)Breakpoint對(duì)象作為它的屬性之一,也就是說(shuō)Breakpoints對(duì)象包含了一個(gè)或者多個(gè)Breakpoint對(duì)象。這樣就可以通過(guò)一個(gè)對(duì)象的屬性來(lái)訪問(wèn)它包含的所有下屬對(duì)象。反過(guò)來(lái),也可以通過(guò)一個(gè)對(duì)象的Parent屬性來(lái)訪問(wèn)它所屬的對(duì)象。 VC這種環(huán)境的對(duì)象封裝機(jī)制為我們開(kāi)發(fā)VBScript宏和插件來(lái)擴(kuò)展VC集成開(kāi)發(fā)環(huán)境的功能提供了極大的方便。下面就讓我們具體看看怎樣來(lái)開(kāi)發(fā)VBScript宏和插件,利用VC的Automation機(jī)制,增強(qiáng)VC開(kāi)發(fā)環(huán)境的功能,以方便自己日常的開(kāi)發(fā)工作。 VBScript宏 我們先來(lái)看一個(gè)具體的宏。下面是快速創(chuàng)建一個(gè)C/C++文件的VBScript宏。 從這個(gè)簡(jiǎn)單的宏,我們可以看到: VC提供了兩種宏記錄的方法:正常宏記錄和快速宏記錄。 如果你想要記錄一個(gè)復(fù)雜的宏,而且要進(jìn)行一些編輯,那就要使用正常的宏記錄了。錄制正常宏的過(guò)程如下:(1)選擇Tools菜單的Macro命令打開(kāi)宏管理器,如圖1所示;(2)如果需要把宏加到一個(gè)新的宏文件里,點(diǎn)擊Options按鈕,點(diǎn)擊New File按鈕,然后在Macro File框里填入文件名字;如果需要把宏加到一個(gè)已有的文件里,則從Macro File的下拉框里選擇文件;(3)在Macro Name框里寫(xiě)入宏的名字;(4)點(diǎn)擊Record按鈕;(5)在Add Macro對(duì)話(huà)框里寫(xiě)入宏的描述,點(diǎn)擊OK按鈕;(5)執(zhí)行需要記錄的動(dòng)作,中間可以點(diǎn)擊Pause按鈕暫停或者繼續(xù);(6)點(diǎn)擊Stop按鈕完成錄制,這時(shí)候VC將打開(kāi)宏文件,并且把光標(biāo)停在宏的起始點(diǎn),你可以對(duì)宏進(jìn)行檢查或者編輯。 圖1 在記錄或者編寫(xiě)好宏以后,宏將被保存在一個(gè)文本文件-宏文件里。在你開(kāi)始記錄或者編寫(xiě)新的宏的時(shí)候,需要選擇宏文件。宏文件的擴(kuò)展名為.DSM,包含了一個(gè)或者多個(gè)VBScript宏,數(shù)量看需要而定。宏文件的一般格式是:開(kāi)始是對(duì)這個(gè)文件的一些描述,然后就是每個(gè)宏的具體定義。 在VC里使用宏文件需要先安裝。一旦安裝了以后,每次啟動(dòng)VC的時(shí)候都會(huì)自動(dòng)裝載這些宏,可以在所有的項(xiàng)目里使用,不依賴(lài)于項(xiàng)目。安裝宏文件的方法如下:(1)選擇Tools菜單的Customize命令;(2)選擇Add-ins and Macro Files頁(yè)簽,如圖2所示,如果宏文件的名字沒(méi)有出現(xiàn)在窗口里,則點(diǎn)擊Browse按鈕去定位。(3)在窗口里打勾選上需要安裝的宏文件即可;如果取消選擇某個(gè)宏文件,則會(huì)卸載這個(gè)宏文件。 圖2 圖3 VC插件 從VBScript宏與插件的這些區(qū)別可以知道:如果使用VBScript宏可以完成的任務(wù),建議盡量使用VBScript宏,因?yàn)殚_(kāi)發(fā)一個(gè)VBScript宏比開(kāi)發(fā)一個(gè)插件要簡(jiǎn)單得多、快得多。VC插件更適合于用來(lái)提供復(fù)雜的功能,例如:全局查找替換、保存所有的文件并編譯、把VC的窗口變成頁(yè)簽式界面(如圖4所示)等等。 圖4 開(kāi)發(fā)插件的基本步驟如下: 其次,需要確定使用什么語(yǔ)言來(lái)開(kāi)發(fā)插件。現(xiàn)在Visual C++、Visual Basic的4.0以上的版本都支持VC插件的開(kāi)發(fā)。VC專(zhuān)門(mén)為插件開(kāi)發(fā)提供了一個(gè)向?qū)В梢詭湍阃瓿纱蟛糠值墓ぷ鳌H绻褂肰isual Basic的話(huà),則需要使用一些類(lèi)型庫(kù)來(lái)訪問(wèn)VC集成開(kāi)發(fā)環(huán)境的對(duì)象。因此,建議你使用VC來(lái)開(kāi)發(fā)比較方便。 接著,需要?jiǎng)?chuàng)建一個(gè)插件的項(xiàng)目。使用VC的插件向?qū)В驅(qū)⒆詣?dòng)創(chuàng)建一個(gè)項(xiàng)目。如果使用VB來(lái)開(kāi)發(fā)插件,最好以一個(gè)例子為基礎(chǔ)。 項(xiàng)目創(chuàng)建了以后,就需要編寫(xiě)代碼了。如果使用了VC的插件向?qū)Щ蛘咭訴B的一個(gè)例子為基礎(chǔ)的話(huà),那么大部分代碼已經(jīng)有了,你只需要加入具體處理的一些代碼即可。 然后,把項(xiàng)目編譯連接成DLL,可以把多個(gè)插件合并在一個(gè)DLL里。最后,在VC里安裝這個(gè)插件就可以使用了。運(yùn)行命令行命令、點(diǎn)擊插件提供的工具條按鈕或者按插件提供的熱鍵就可以使用插件了。 VC 5.0以上的版本專(zhuān)門(mén)為插件的開(kāi)發(fā)提供了一個(gè)插件向?qū)А?梢允褂眠@個(gè)向?qū)лp松、快速地生成插件的基本代碼,然后根據(jù)自己的需要進(jìn)行修改。使用VC的插件向?qū)нM(jìn)行插件開(kāi)發(fā)的步驟如下: 圖5 這里需要簡(jiǎn)單說(shuō)明一下VC集成開(kāi)發(fā)環(huán)境與插件之間的關(guān)系,如圖6所示。每一個(gè)插件都向外提供了兩個(gè)對(duì)象DSAddIn和Commands。VC的集成開(kāi)發(fā)環(huán)境使用DSAddIn對(duì)象來(lái)裝載或者卸載一個(gè)插件,使用Commands對(duì)象來(lái)執(zhí)行插件提供的功能。具體來(lái)說(shuō),VC是調(diào)用插件的DSAddIn對(duì)象的OnConnection方法來(lái)裝載插件的,這個(gè)方法還發(fā)布了插件向外提供的功能接口,如果插件包含了事件的處理,還把連接到VC集成環(huán)境的事件上。VC調(diào)用DSAddIn對(duì)象的OnDisconnection方法來(lái)卸載插件。Commands對(duì)象則包含了AddCommand所加入的每一個(gè)功能接口,編寫(xiě)插件的時(shí)候必須為每一個(gè)功能接口編寫(xiě)代碼。 圖6 最后,把插件編譯連接成DLL。安裝插件的方法是:(1)選擇Tools菜單的Customize命令;(2)選擇Add-ins and Macro Files頁(yè)簽,如果插件的名字沒(méi)有出現(xiàn)在窗口里,則點(diǎn)擊Browse按鈕去定位。(3)在窗口里打勾選上需要安裝的插件即可;如果取消選擇某個(gè)插件,則會(huì)卸載這個(gè)插件。插件安裝了以后,VC每次啟動(dòng)都會(huì)自動(dòng)裝載這個(gè)插件,你就可以使用這個(gè)插件提供的功能來(lái)為自己的應(yīng)用開(kāi)發(fā)服務(wù)了。 |