秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

COM組件編程基礎課件

上傳人:20****08 文檔編號:253396717 上傳時間:2024-12-13 格式:PPT 頁數(shù):78 大?。?.64MB
收藏 版權申訴 舉報 下載
COM組件編程基礎課件_第1頁
第1頁 / 共78頁
COM組件編程基礎課件_第2頁
第2頁 / 共78頁
COM組件編程基礎課件_第3頁
第3頁 / 共78頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《COM組件編程基礎課件》由會員分享,可在線閱讀,更多相關《COM組件編程基礎課件(78頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,,,,,,,,單擊此處編輯母版標題樣式,,,*,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,,,,,,,,,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,,,*,§,10. 1 COM,簡介,一、什么是,COM,,COM,(,Component Object Model,): 組件對象模型,,其中:,1.,它定義了一套為構建一個組件所必需遵循的規(guī)則?;?者說它是一個說明如何建立可動態(tài)交替更新組件的規(guī),范,該規(guī)范為客戶和組件提供保證能夠互操作應該遵,循的標準;,2.,它定義了組件和它們的客戶之間互相作用的方式。采,用客戶進程直接調用組件中

2、的方法,使得組件和客戶,端無需任何中介組件就能互相聯(lián)系;,,3. COM,組件有可執(zhí)行代碼組成,即以二進制代碼形,式重用,一般通過,DLL/EXE,形式發(fā)布,且通過,GUID,來保證每個,COM,對象是全球唯一的。,,§10. 1 COM簡介一、什么是COM,1,說明:,,1. COM,不是一類程序的擴展名,也不是一種程序設計,語言;,,2. COM,可利用,DLL,來給組件提供動態(tài)鏈接的能力,但,COM,不是,DLL,;,,3. COM,可采用各種語言進行編寫(語言無關性),同一,個軟件中不同組件可以使用不同的語言和工具開發(fā),;,,4. COM,是由,OLE,(對象連接與嵌入)技術發(fā)展而來,

3、,COM,技術的目的是為開發(fā)、維護應用程序提供高效靈,活手段,,說明:,2,二、,COM,服務器、,COM,對象、,COM,接口和函數(shù)的關系,,1.,一個,COM,服務器(,DLL,或,EXE,)可以包含若干個,COM,對象;,2.,一個,COM,對象可以包含若干個接口;,3.,一個接口可以包含若干個函數(shù)。,COM,服務器,,,,,,,,,,,COM,對象,1,,,,,,,,,,,接口,1,,,,,函數(shù),1,函數(shù),2,接口,2,,,函數(shù),1,,COM,對象,2,,,,,,,,,接口,1,,,,,,,函數(shù),1,函數(shù),2,函數(shù),3,二、COM服務器、 COM對象、COM接口和函數(shù)的關系COM,3,

4、,IInterface_1,IInterface_2,COM,服務器,,,,,,,,,,,,接口對象,1,,,,,函數(shù),1,函數(shù),2,接口對象,2,,,函數(shù),1,IUnknown,說明:一般將,COM,對象表示為帶固定格式的圓形接頭,,每個接頭表示一個對外提供的接口,,IUnknown,接,口處首要地位,.,IInterface_1IInterface_2COM服務器,4,三、,接口,,1. COM,接口提供訪問對象的一種方式,應用程序只能通過一個接,口指針訪問對象的函數(shù)。,COM,接口由一個,全 局唯一標識符,(,GUID,),IID,來區(qū)分和確定。,,2.,所有,COM,接口都從,IUnk

5、nown,接口派生,struct IUnknown,{,virtual LONG QueryInterface( REFIID riid, void **ppv) = 0;,virtual ULONG AddRef( void) = 0;,virtual,ULONG,Release( void) = 0;,},,其中:,,⑴,,QueryInterface,通過接口標識符,riid,查詢(確定)接口,返回,指向接口的指針的指針,同時調用,AddRef(),;,,⑵,AddRef,和,Release,用來管理對象接口被訪問的參數(shù)計數(shù)。調用這兩種方法的規(guī)則為:設,N,為接口被訪問的計數(shù)器。,?

6、,無論何時客戶接收到接口指針時,必須調用,AddRef,:,N++,?,無論何時客戶完成使用接口指針時,必須調用,Release,:,N- -,其目的是管理被使用的,COM,何時能夠被釋放:當,N=0,時,三、接口,5,,UUID/GUID,:,Universally/Globals Unique IDentifiers,,通用,/,全局(球)唯一標識符(,128,位,,16,字節(jié),,,,32,個字符),,GUID,的格式為:,“,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個,x,是,0-9,或,A-F,范圍內的一個十六進制的數(shù)字。,例如:,97AD6F

7、A3-8CAD-4068-90AE-320545A1E8C8,,即為有效的,GUID,值,。,,CLSID,:,COM,類標識符(,CLASS Identifiers,),LIBID,:類型庫標識符(,type LIBrary Identifier,),IID,:接口標識符(,Interface Identifiers,),ProgID,:,Programmer IDentifiers,,程序員給,CLSID,指定的一個程序員易記的名稱,根據(jù)約定,, ProgID,格式如下,:, . . ,IDL,:接口定義語言(,Interface Definition Language,),DCOM,:

8、分布式組建對象模型(,Distributed Component Object Model,),,名詞解釋,UUID/GUID: Universally/Global,6,§,10. 2,基于,ATL,之,DLL,實現(xiàn),COM,,一、,ATL,簡介,,ATL,:活動模版庫(,Active Template Liabrary,),它是為明確創(chuàng)建,COM,對象這個目的而提供的模版類庫,它提供了對幾個接,口的內在支持,包括,IUnknown,、,IClassFactory,、,IDispatch,,,其中:,IClassFactory,(類工廠)是為訪問一個,COM,服務器(,DLL,或,EXE

9、,)中包含多個,COM,對象中的接口對象提供的接口,類。,IClassFactory,聲明如下:,,IClassFactory : public IUnknown,{,public:,virtual HRESULT STDMETHODCALLTYPE CreateInstance(,IUnknown *pUnkOuter,,REFIID riid,,void **ppvObject) = 0;,virtual HRESULT STDMETHODCALLTYPE LockServer(,BOOL fLock) = 0;,};,,說明:,IClassFactory,派生于,IUnknown,

10、,因此它仍然支持標準的,,QueryInterface,的,COM,接口。,§10. 2 基于ATL之DLL實現(xiàn)COM 一、ATL簡,7,,IDispatch,(雙重接口)是為和其他語言兼容提供的接口類,,。,IDispatch,聲明如下:,,IDispatch : public IUnknown,{,public:,virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(,……,virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(,……,virtual HRESULT STDMETHODCALLTYPE

11、 GetIDsOfNames(,……,virtual HRESULT STDMETHODCALLTYPE Invoke(,/* [in] */ DISPID dispIdMember,,/* [in] */ REFIID riid,,/* [in] */ LCID lcid,,/* [in] */ WORD wFlags,,/* [out][in] */ DISPPARAMS *pDispParams,,/* [out] */ VARIANT *pVarResult,,/* [out] */ EXCEPINFO *pExcepInfo,,/* [out] */ UINT *puArgErr)

12、= 0;,};,,說明:自定義(單)接口就是直接繼承,IUnknown,IDispatch(雙重接口)是為和其他語言兼容提供的接,8,二、利用,ATL,向導建立,COM,二、利用ATL 向導建立COM,9,注意本章使用,注意本章使用,10,步驟,1,:建立,ATL,項目,步驟1:建立ATL項目,11,COM組件編程基礎課件,12,COM組件編程基礎課件,13,說明:,,1.,允許合并代理,/,存根代碼,代理:是為遠程過程調用將參數(shù)打包的一段代碼,存根:是在遠程過程調用中將參數(shù)解包的一段代碼,如果你建立的,COM,(,DCOM,)需要遠程訪問則選擇這,一項。,,2. COM + 1.0,,COM

13、 +,是微軟,COM,系統(tǒng)的最新版本且版本號是,1.0,,,“,+,”,表示對原,COM,的一些特征和服務進行了改進。在某,些方面,簡化了某些與,COM,相關任務的屬性和服務。,,3.,如果選擇服務器類型是,“,可執(zhí)行文件,(EXE),”,則不支持,,“,MFC,”,和,“,COM + 1.0”,,4.,如果選擇服務器類型是,“,服務,(EXE),”,,,則,“,允許合并,代理,/,存根代碼,”,、,“,MFC,”,和,“,COM + 1.0”,均不支持,說明:,14,COM組件編程基礎課件,15,步驟,2,:添加一個接口類:,IClassOne,步驟2:添加一個接口類:IClassOne,1

14、6,在此處填寫“,IClassOne”,在此處填寫“IClassOne”,17,COM組件編程基礎課件,18,說明:,1.,線程模型,,?,單線程:所有選擇(標記為)單一線程模型的接口對,象只能在一個線程上運行,而且它不是別的,線程必須是所謂的主(,main,)線程。,,?,單元:單元亦稱為公寓(,Apartment,),單元(公寓),是線程在內存中運行的區(qū)域,選擇,“,單元,”,就,表示除主線程單元外,還提供主線程單元之外,的(子)單元,而將建立的接口對象將來是在,子單元中運行,即多個單元中的線程實例化的,多個接口對象將能夠并發(fā)運行。,,?,自由:和單線程類似只有一個主單元(公寓),但和,單

15、線程不同的是在這惟一的單元中可以有多個,線程在執(zhí)行。,,?,兩者:單元,+,自由,2.,聚合:是一個外部對象暴露內部對象接口的過程,,說明:1. 線程模型,19,再在接口類“,IClassOne”,中添加一個,接口函數(shù)“,ILoginDlg”,再在接口類“IClassOne”中添加一個,20,COM組件編程基礎課件,21,COM組件編程基礎課件,22,添加的接口函數(shù)如下:,添加的接口函數(shù)如下:,23,步驟,3,:向項目中添加對話框資源,步驟3:向項目中添加對話框資源,24,COM組件編程基礎課件,25,COM組件編程基礎課件,26,對話框進行如下設置:,*****,對話框進行如下設置: ***

16、**,27,使用類向導給,對話框資源“,IDD_LOGIN_DLG,”,配置類,“,CLoginD,ialog”,使用類向導給對話框資源“IDD_LOGIN_DLG”,28,COM組件編程基礎課件,29,步驟,4,:在接口函數(shù)中添加代碼,步驟4:在接口函數(shù)中添加代碼,30,編譯生成,COM,組建,查看發(fā)布文件,編譯生成COM組建查看發(fā)布文件,31,COM組件編程基礎課件,32,其中,DEF,文件中,4,個函數(shù)的作用是:,,?DllCanUnloadNow,當調用結束時負責卸載,COM,?DllGetClassObject,,客戶程序通過它訪問,COM,,它創(chuàng)建由,CLSID,制定類型的對,象,

17、該對象就是在客戶程序中調用,CoCreateInstance(),中請求對象,的類工廠。,,?,DllRegisterServer,,在注冊表中注冊該,COM,組件(服務器),注意:當在命令行中執(zhí)行,regsvr32,命令時調用該函數(shù),,例如:,regsvr32,,D:,\ComDll\ComDll\Debug\ComDll.dll,,?,DllUnregisterServer,從注冊表中卸載該,COM,組件(服務器),,注意:當在命令行中執(zhí)行,regsvr32,命令時調用該函數(shù),,,例如:,regsvr32 -u,,D:\ComDll\ComDll\Debug\ComDll.dll,說明:,

18、ATL,是自注冊的,即在生成,DLL,或,EXE,時自動組冊,其中DEF文件中4個函數(shù)的作用是:,33,COM組件編程基礎課件,34,測試程序之建立,測試程序之建立,35,COM組件編程基礎課件,36,COM組件編程基礎課件,37,COM組件編程基礎課件,38,為“測試,ComOneDll”,菜單項添加消息映射函數(shù),為“測試ComOneDll”菜單項添加消息映射函數(shù),39,在函數(shù)中添加代碼,在函數(shù)中添加代碼,40,WINOLEAPI CoCreateInstance(,REFCLSID rclsid,,LPUNKNOWN pUnkOuter,,DWORD dwClsContext,,REFII

19、D riid, //,接口標識符,LPVOID FAR* ppv); //,返回指向借口函數(shù)的指針,其中:,API,函數(shù),CoCreateInstance,的作用是調用,COM,,返回指向接口,函數(shù)的指針。實際是負責調用,DEF,文件中給出的,,DllGetClassObject(),實例化組件對象 (類工廠)的函數(shù)。,,? rclsid,:,DllGetClassObject(),函數(shù)用該類標識符實例化組件對象,,? pUnkOuter,:,COM,的,IUnknown,,用,ATL,生成的,COM,取值,NULL,? dwClsContext,:表明,COM,服務器程序運行所在的上下文

20、,(,環(huán)境,),,這,個參數(shù)指定了包含被請求,COM,的服務器程序類型。,,dwClsContext,取值范圍有,6,個,在這里僅給出與我們編程有關的,3,個,,CLSCTX_INPROC_SERVER,:,COM,服務器程序是一個,DLL,,表明,COM,與客戶程序運行在同一進程中,CLSCTX_LOCAL_SERVER,:,COM,服務器程序是一個,EXE,,表明,COM,程序運行在一個單獨的進程中,,CLSCTX_ALL,:代表任何一種均可以,API,函數(shù),CoCreateInstance,原形如下:,WINOLEAPI CoCreateInstance( 其,41,編譯、運行結果,編譯

21、、運行結果,42,regsvr32 e:\ALTCOM08\AltToCom1\Debug\AltToCom1.dll,手工注冊,:,開始,─,?,運行,regsvr32 e:\ALTCOM08\AltToCom1,43,§,10. 3,基于,ATL,之,EXE,文件實現(xiàn),COM,§10. 3 基于ATL之EXE文件實現(xiàn)COM,44,步驟,1,:建立,ATL,項目,步驟1:建立ATL項目,45,COM組件編程基礎課件,46,COM組件編程基礎課件,47,COM組件編程基礎課件,48,步驟,2,:向項目中添加對話框資源,步驟2:向項目中添加對話框資源,49,COM組件編程基礎課件,50,COM

22、組件編程基礎課件,51,COM組件編程基礎課件,52,COM組件編程基礎課件,53,COM組件編程基礎課件,54,COM組件編程基礎課件,55,步驟,3,:構造窗口類,首先向項目中添加一個,C++,類,步驟3:構造窗口類,56,COM組件編程基礎課件,57,在,MyWindow.h,文件中添加代碼構造窗口類及關聯(lián)類,在MyWindow.h文件中添加代碼構造窗口類及關聯(lián)類,58,COM組件編程基礎課件,59,COM組件編程基礎課件,60,在主函數(shù)(,main,)中添加利用,CMyWindow,類建立窗口的代碼,在主函數(shù)(main)中添加利用CMyWindow類建立窗口的,61,編譯(編譯后自動運行),編譯(編譯后自動運行),62,COM組件編程基礎課件,63,COM組件編程基礎課件,64,步驟,4,:在項目中添加一個接口類,步驟4:在項目中添加一個接口類,65,COM組件編程基礎課件,66,COM組件編程基礎課件,67,COM組件編程基礎課件,68,COM組件編程基礎課件,69,生成的接口函數(shù),生成的接口函數(shù),70,向接口函數(shù)中添加代碼,向接口函數(shù)中添加代碼,71,查看發(fā)布文件,查看發(fā)布文件,72,測試程序之建立,測試程序之建立,73,COM組件編程基礎課件,74,添加代碼,添加代碼,75,編譯、運行,編譯、運行,76,COM組件編程基礎課件,77,COM組件編程基礎課件,78,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!