国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

COM程序編寫入門(全文-3)

2019-11-18 18:21:35
字體:
供稿:網(wǎng)友

COM對象的生存周期與IUnknown接口

COM對象的生存周期分為兩部分來講:客戶端與COM本身:
在客戶端,視定義的COM對象接口而定,像我們例子中的v_Obj,定義成全局變量,那么COM對象在創(chuàng)建時產(chǎn)生,只有在程序退出時才被釋放。我們也可以在形式上將其釋放,如:v_Obj:=nil,這樣這個COM接口就無效了。
在COM本身,COM接口的通過記數(shù)的方式來完成COM的生存周期,為什么采用記數(shù),當(dāng)然很簡單——因為COM可能同時被多個程序所調(diào)用。有一個程序連接到COM時計數(shù)器加1,某個釋放時計數(shù)器減1,當(dāng)計數(shù)器為0時,COM對象才真正從內(nèi)存中移除。
IUnknown接口:
      為什么將IUnknown接口與生存周期放在一起講是有原因的,COM生存周期中的計數(shù)器就定義在IUnknown接口中:AddRef、Release、QueryInterface。這三個接口也是IUnknown的全部身家。對三個接口還是解釋一下:
AddRef:當(dāng)COM產(chǎn)生一個客戶端連接的時候,AddRef方法負(fù)責(zé)將計數(shù)器加1;
Release:當(dāng)COM釋放一個客戶端連接的時候,Release方法負(fù)責(zé)將計數(shù)器減1,如果計數(shù)器為0,釋放COM;
QueryInterface:因COM支持多個接口,QueryInterface負(fù)責(zé)找出用戶指定的接口以返回正確的VTable;
接口全局標(biāo)識:
       上面說到QueryInterface的時候,提到了要找到正確的接口。其實正確的接口就是靠全局標(biāo)識符來識別的。它是一個128位的數(shù)字,是按照統(tǒng)計學(xué)的方法,計算出來的,可唯一標(biāo)識出每個接口(理論上)。具體實現(xiàn)我們不用管,它產(chǎn)生的方法很簡單,在Delphi中按Ctrl+Shift+G就可以產(chǎn)生一個。

COM實現(xiàn)在Delphi中的實現(xiàn)

相信通過上面的介紹對COM應(yīng)該也有了初步的認(rèn)識了,現(xiàn)在就將點實際的東西,如何在Delphi下編寫COM。
       在Delphi下面開發(fā)COM是比較容易的,Delphi封裝的COM開發(fā)的最基本的要素,只要你去編寫對象的實現(xiàn)類就行了,其他的全有Delphi搞定。
1、打開Delphi,選擇File/New/Others,選擇Active頁的ActiveX Library,選擇File/New/Others,選擇Active頁的COM Object,出現(xiàn)的向?qū)е斜容^重要的選項如下:
Class Name:實現(xiàn)類的名稱,自定。
Include Type Library:是否包含類型庫文件,如果不選擇,Delphi將不產(chǎn)生類型庫文件,應(yīng)此上面輸入的Class Name也無效。也就意味著接口類、實現(xiàn)類、實現(xiàn)方法都的自己寫。對于不是很熟悉COM的的人員最好不要采用這種方式。
其它參數(shù)均可采用默認(rèn)值,具體意義可參見有關(guān)資料。
2、接口的編寫
選擇View/Type Library,選擇接口,右鍵New選擇Method,在右邊Attributes的Name中輸入接口的名稱,在Parameters中加入需要加入的輸入和輸出參數(shù)。注意:設(shè)置參數(shù)類型時,如果是返回參數(shù)的,參數(shù)類型后面要加上“*”。點擊刷新,在程序單元中就出現(xiàn)了剛定義的接口,在此編寫實現(xiàn)代碼就可以了。
3、COM的安裝
編寫完成后編譯,通過Run/Register ActiveX Server注冊編譯好的COM,通過Run/Install COM+ Objects安裝COM組件,在彈出的對話框中選擇接口,在接下來的對話框中可以選擇安裝到已有的COM應(yīng)用程序中也可以安裝到新的COM應(yīng)用程序中。這樣就完成了COM的安裝,你可以打開系統(tǒng)中的組件服務(wù)看到你所安裝的COM。
由于工作繁忙,沒能更加詳細(xì)的將個人的心得詳細(xì)描述出來,本人會陸續(xù)發(fā)表自己的心得與大家分享。朋友們有興趣的可以和我聯(lián)系;
QQ:103222465

上一篇:“磁性”窗口新篇

下一篇:COM程序編寫入門(全文-2)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 新密市| 清水河县| 武汉市| 蓬莱市| 翼城县| 茌平县| 微山县| 射洪县| 陆川县| 姜堰市| 泸溪县| 天台县| 镇原县| 黎川县| 伽师县| 疏勒县| 富民县| 南召县| 慈溪市| 同仁县| 新乡县| 鞍山市| 金堂县| 合肥市| 遵义县| 峨边| 许昌市| 独山县| 安平县| 东台市| 若尔盖县| 哈巴河县| 抚顺县| 谢通门县| 同心县| 张家界市| 新源县| 香港| 华阴市| 收藏| 白城市|