Sdílet prostřednictvím


Třída CComTearOffObject

Tato třída implementuje rozhraní odtrhnout.

template< 
   class Base  
> 
class CComTearOffObject : 
   public Base

Parametry

  • Base
    Vaše odtrhnout třídy odvozené z CComTearOffObjectBase a rozhraní chcete objekt odtrhnout podporu.

ATL implementuje ve dvou fázích jeho odtrhnout rozhraní – CComTearOffObjectBase metod zpracování počet odkazů a QueryInterface , zatímco CComTearOffObject implementuje IUnknown.

Členy

Veřejné konstruktory

Název

Description

CComTearOffObject::CComTearOffObject

Konstruktor.

CComTearOffObject:: ~ CComTearOffObject

Destruktoru.

Veřejné metody

Název

Description

CComTearOffObject::AddRef

Zvýší počet odkazů pro CComTearOffObject objektu.

CComTearOffObject::QueryInterface

Odtrhnout třídy nebo vlastník třída vrací ukazatel na požadované rozhraní.

CComTearOffObject::Release

Sníží počet odkaz pro CComTearOffObject objektu a ničí ji.

Metody CComTearOffObjectBase

CComTearOffObjectBase

Konstruktor.

CComTearOffObjectBase datové členy

m_pOwner

Ukazatel CComObject odvozené od třídy vlastníka.

Poznámky

CComTearOffObjectjako samostatný objekt, který je vytvořena pouze v případě, že rozhraní je dotazován na implementuje rozhraní odtrhnout.Útržek je odstraněna při jeho počet odkazů bude roven nule.Obvykle vytvoříte rozhraní odtrhnout pro rozhraní, které je používán pouze zřídka, protože použití útržek uloží ukazatel virtuální tabulka ve všech instancích hlavní objekt.

Měla odvození třídy implementace odtrhnout od CComTearOffObjectBase a z toho rozhraní má objekt odtrhnout podporu.CComTearOffObjectBaseVlastník Třída a model podprocesu je templatized.Vlastník Třída je třída objektu, pro který odtrhnout je prováděna.Pokud model podprocesu nezadáte, bude použita výchozí model podprocesu.

Vytvořte mapu COM odtrhnout třídy.Když ATL konkretizuje odtrhnout, vytvoří CComTearOffObject <CYourTearOffClass> nebo CComCachedTearOffObject <CYourTearOffClass>.

Například ve vzorku BEEPER CBeeper2 třída je třída odtrhnout a CBeeper třída je třída vlastníka:

class CBeeper2 :
   public ISupportErrorInfo,
   public CComTearOffObjectBase<CBeeper>
{
public:
   CBeeper2() {}
   STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
   {
      return (InlineIsEqualGUID(IID_IBeeper, riid)) ? S_OK : S_FALSE;
   }

BEGIN_COM_MAP(CBeeper2)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
};

class ATL_NO_VTABLE CBeeper :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CBeeper, &CLSID_Beeper>,
   public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   CBeeper()
   {
   }

DECLARE_REGISTRY_RESOURCEID(IDR_BEEPER)

DECLARE_NOT_AGGREGATABLE(CBeeper)

BEGIN_COM_MAP(CBeeper)
   COM_INTERFACE_ENTRY(IBeeper)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()

// ISupportsErrorInfo
   STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);


   DECLARE_PROTECT_FINAL_CONSTRUCT()

   HRESULT FinalConstruct()
   {
      return S_OK;
   }

   void FinalRelease()
   {
   }

public:

};

Hierarchii dědičnosti

Base

CComTearOffObject

Požadavky

Záhlaví: atlcom.h

Viz také

Referenční dokumentace

Třída CComCachedTearOffObject

Další zdroje

Přehled třídy ATL