ATL元件模板模擬

2021-04-14 00:21:32 字數 1417 閱讀 1238

atl建立元件方便快捷,但是內部結構層次比較複雜,使用了很多的模板類。我在分析原理過程中,對其簡化如化。

元件實現了某個結口,對於建立,基本生存週期管理及介面查詢,盡量讓巨集去處理或是父類去處理。

對於建立通過每個元件的內部物件 xobj來實現。

讀者可以建立乙個mfc的控制台程式,把下面的程式拷去執行。

#include "stdafx.h"

#include "wtypes.h"

#include "objbase.h"

#include "initguid.h"

class iu;//

//模板多重繼承類

//建立類

template

class coobject : public base

virtual ulong release()

virtual ulong queryinte***ce(refiid iid, void **ppvoid)

coobject()

//  static ulong createinstance(refiid riid, void **ppvoid)

// 

};template

class coxcreate

};#define declare_cc_xx(x) public:/

typedef coxcreate< coobject > xobj;

#define begin_cc_inter()/

public:/

virtual ulong addref() = 0;/

virtual ulong release() = 0;/

virtual ulong queryinte***ce(refiid iid, void **ppvoid) = 0;

template

class create

class ideal : public iu

;class ydeal : public iu

;class cxdeal : /*public refcount, */

public create,

public ideal

virtual void h1()

declare_cc_xx(cxdeal);

begin_cc_inter();

};class cydeal : /*public refcount,*/

public create,

public ydeal

virtual void hh()

declare_cc_xx(cydeal);

begin_cc_inter();

};void test3()

//模板多重繼承類結構

//int main(int argc, char* argv)

使用ATL建立程序外元件

一 建立乙個程序外元件 2 在project name欄輸入step02,單 擊ok按鈕,在下乙個視窗中的server type欄選 擇 executable exe 之後,單擊finish按鈕 然後插入物件 與建立程序內元件類似 3 開啟選單insert new atl object,在左邊的ca...

元件物件模型與ATL實現補遺

元件物件模型與atl實現補遺 cheungmine 2007 10 11 stdmethodimp ienumonstlimpl next 更正為 只需要改變粗體的地方,一句話而已 hr copy copy pelt,m iter 改為hr copy copy pelt,m iter 改過之後的完整...

元件物件模型與ATL實現補遺

元件物件模型與atl實現補遺 cheungmine 2007 10 11 stdmethodimp ienumonstlimpl next 更正為 只需要改變粗體的地方,一句話而已 hr copy copy pelt,m iter 改為hr copy copy pelt,m iter 改過之後的完整...