Udostępnij za pośrednictwem


Klasa CComTearOffObject

Ta klasa implementuje interfejs Odrywane.

template<
   class Base 
>
class CComTearOffObject :
   public Base

Parametry

  • Base
    Pochodną klasy Odrywane, CComTearOffObjectBase i interfejsy ma obiekt Zdzierane do obsługi.

ATL implementuje interfejsy Odrywane w dwóch fazach — CComTearOffObjectBase metody obsługi licznika odwołań i QueryInterface, podczas gdy CComTearOffObject implementuje IUnknown.

Członkowie

wh8b86c9.collapse_all(pl-pl,VS.110).gifPubliczne konstruktory

Nazwa

Opis

CComTearOffObject::CComTearOffObject

Konstruktor.

CComTearOffObject:: ~ CComTearOffObject

Destruktor.

wh8b86c9.collapse_all(pl-pl,VS.110).gifMetody publiczne

Nazwa

Opis

CComTearOffObject::AddRef

Zwiększa liczbę odwołań do CComTearOffObject obiektu.

CComTearOffObject::QueryInterface

Zwraca wskaźnik do żądanego interfejsu klasy Odrywane lub klasę właściciela.

CComTearOffObject::Release

Zmniejsza zliczanie odniesienia dla CComTearOffObject obiektu i niszczy ją.

wh8b86c9.collapse_all(pl-pl,VS.110).gifMetody CComTearOffObjectBase

CComTearOffObjectBase

Konstruktor.

wh8b86c9.collapse_all(pl-pl,VS.110).gifCzłonkowie CComTearOffObjectBase danych

m_pOwner

Wskaźnik do CComObject pochodną klasy właściciela.

Uwagi

CComTearOffObjectimplementuje interfejs Odrywane jako oddzielny obiekt, który jest tylko wtedy, gdy kwerenda interfejsu.Odrywane jest usuwane po jego licznik odniesienia staje się zero.Zazwyczaj zbudować interfejs Odrywane dla interfejsu, który jest rzadko używana, ponieważ wskaźnik vtable przy użyciu Zdzierane zapisuje wszystkie wystąpienia obiektu głównego.

Powinna pochodzić z klasy wykonawczych Odrywane z CComTearOffObjectBase i zależnie od interfejsów ma obiekt Zdzierane do obsługi.CComTearOffObjectBasejest templatized na klasy właściciela i model wątku.Właściciel klasa jest klasa obiektu, dla którego Odrywane jest wdrażana.Jeśli nie określisz modelu wątków jest używany domyślny model wątków.

Należy utworzyć mapę COM klasy Odrywane.Gdy tworzy ATL Odrywane, utworzy CComTearOffObject <CYourTearOffClass> lub CComCachedTearOffObject <CYourTearOffClass>.

Na przykład w przypadku próbki BEEPER CBeeper2 klasa jest klasą Odrywane i CBeeper klasa jest klasą właściciela:

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 dziedziczenia

Base

CComTearOffObject

Wymagania

Nagłówek: atlcom.h

Zobacz też

Informacje

Klasa CComCachedTearOffObject

Inne zasoby

Omówienie klasy ATL