CComTearOffObject

templatelt; クラス ベース >
クラス CComTearOffObject : パブリック ベース

パラメーター

ベース

CComTearOffObjectBaseとサポートするために、ティアオフ オブジェクト インターフェイスから派生し、ティアオフ クラス、。

ATL には 2 つのフェーズで、ティアオフ インターフェイスを実装する- CComTearOffObjectを実装しますが、参照カウント、 QueryInterfaceCComTearOffObjectBaseメソッドを処理 IUnknown

CComTearOffObjectはのみインターフェイスを照会するときにインスタンス化される、個別のオブジェクトとして、ティアオフ インターフェイスを実装します。その参照カウントが 0 になると、ティアオフが削除されます。通常、ティアオフ インターフェイス、ティアオフを使用は vtable ポインター メイン オブジェクトのすべてのインスタンスに保存するので、ほとんど、使用のインターフェイスを構築します。

ティアオフCComTearOffObjectBaseどちらのインターフェイスをサポートするために、ティアオフ オブジェクトを実装するクラスを派生する必要があります。CComTearOffObjectBaseは、所有者クラスとスレッド モデルのテンプレートです。所有者クラスは、ティアオフが実装されているオブジェクトのクラスです。スレッド モデルを指定しない場合は、既定のスレッド モデルが使用されます。

ティアオフ クラスの COM マップを作成する必要があります。ATL をインスタンス化、ティアオフ状態のときは、 CComTearOffObjectlt が作成されます。CYourTearOffClass >またはCComCachedTearOffObject <CYourTearOffClass>

BEEPER サンプルで、 CBeeper2 クラスは、ティアオフ クラス、 CBeeper クラスは、所有者クラス:

cBeeper2 クラス: パブリック ISupportErrorInfo特価;公共 CComTearOffObjectBase <CBeeper>{パブリック。CBeeper2() {STDMETHOD(InterfaceSupportsErrorInfo) (REFIID riid){返す (InlineIsEqualGUID(IID_IBeeper,riid)) か。S_OK: S_FALSE;}BEGIN_COM_MAP(CBeeper2)COM_INTERFACE_ENTRY(ISupportErrorInfo)END_COM_MAP()};CBeeper をクラスします。パブリック IDispatchImpl < IBeeper、IID_IBeeper、& LIBID_BeeperLib >、パブリック CComObjectRootパブリック CComCoClass < CBeeper、& CLSID_Beeper >{パブリック。CBeeper();BEGIN_COM_MAP(CBeeper)COM_INTERFACE_ENTRY(IDispatch)COM_INTERFACE_ENTRY(IBeeper)COM_INTERFACE_ENTRY_TEAR_OFF (IID_ISupportErrorInfo、CBeeper2)END_COM_MAP()...}

#include lt;atlcom.h>

クラス メンバー

参照特価;CComCachedTearOffObject(&N)

Index