freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

十一自動化對象(編輯修改稿)

2024-11-17 10:50 本頁面
 

【文章內(nèi)容簡介】 etTypeInfoCount GetTypeInfo GetIDsofNames Invoke 接口指針 Add Substract Multiply Divide 0 1 2 3 分發(fā)表 組件的實際業(yè)務(wù)功能 IUnknown IDispatch 10 ? 更常用地 ,我們把具體的計算功能也作為接口直接暴露出去 ,我們從 IDispatch派生一個接口 IMath. [ object, uuid(2756E11CA606482F969C14153E1D1609), dual//說明是一個雙接口 ] interface IMath: IDispatch { properties: methods: [id(0)] HRESULT Add //0,1,2,3分別是分發(fā) ID ([in] long Op1,[in] long Op2,[out,retval] long* pResult)。 [id(1)] HRESULT Substract ([in] long Op1,[in] long Op2,[out,retval] long* pResult)。 [id(2)] HRESULT Multiply ([in] long Op1,[in] long Op2,[out,retval] long* pResult)。 [id(3)] HRESULT Divide ([in] long Op1,[in] long Op2,[out,retval] long* pResult)。 } 11 ? 自動化對象實現(xiàn)雙接口 : class CMath:public IMath {…… public: //來自 IUnknown的三個函數(shù) virtual HRESULT __stdcall QueryInterface(…… ) 。 virtual ULONG __stdcall AddRef() 。 virtual ULONG __stdcall Release() 。 // 來自 IDispatch的三個函數(shù) HRESULT GetTypeInfoCount( …… )。 HRESULT GetTypeInfo( …… )。 HRESULT GetIDsOfNames(…… )。 HRESULT Invoke( …… )。 // 來自 IMath的三個函數(shù) HRESULT Add(long Op1, long Op2, long* pResult)。 HRESULT Substract(long Op1, long Op2, long* pResult)。 HRESULT Multiply(long Op1, long Op2, long* pResult)。 HRESULT Divide(long Op1, long Op2, long* pResult)。 }。//此 COM對象同時通過分發(fā)接口給外界提供分發(fā)調(diào)用服務(wù) 。通過IMath接口直接通過虛表來提供普通的服務(wù) . 12 實現(xiàn)雙接口的自動化對象的虛表和分發(fā)表 pVtable QueryInterface AddRef Release m_pData GetTypeInfoCount GetTypeInfo GetIDsofNames Invoke 接口指針 Add Substract Multiply Divide 0 1 2 3 分發(fā)表 IUnknown IDispatch IMath 13 3 自動化接口的實現(xiàn) ? 分發(fā)接口的四個函數(shù)從功能上來說分為兩組 : 1. GetTypeInfoCount與 GetTypeInfo函數(shù)表示對類型庫的支持 . 通??蛻舨⒉恍枰獜姆职l(fā)接口的這兩個函數(shù)中來訪問類型庫 .如果愿意 ,客戶可以借助 IDE生成封裝類 ,或者直接使用操作類型庫也可以 . 但如果真要實現(xiàn)它 ,那么 : 1. 提供類型庫文件 (MIDL編譯器對 IDL編譯的結(jié)果 ) 2. GetTypeInfoCount返回 1, 否則返回 0。 3. GetTypeInfo 使用 LoadTypeLib得到 ITypeLib接口 .然后得到 ITypeInfo接口 .一旦客戶得到 ITypeInfo接口指針就可以完全地了解接口的類型及其所支持的屬性和方法。 2. GetIDsOfNames和 Invoke完成函數(shù)的分發(fā)調(diào)用 . GetIDsOfNames有兩種實現(xiàn)方法 : 。它當(dāng)然知道自己所有的方法和屬性的分發(fā)ID。 使用 switch case或者如果數(shù)目太多的話 ,使用表格進(jìn)行查表 . 14 HRESULT GetIDsOfNames( REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId ) { // 假設(shè) cNames==1,即一回只查一個名字 . char * str=OLE2T(rgszzNames[0])。 if (strcmp(“Add”,str,3)==0) rgDispId[0]=0。 //加法返回 0 else if (strcmp(“Substract”,str,8)==0) rgDispId[0]=1。 //減法返回 1 e
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1