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
Publiczne konstruktory
Nazwa |
Opis |
---|---|
Konstruktor. |
|
Destruktor. |
Metody publiczne
Nazwa |
Opis |
---|---|
Zwiększa liczbę odwołań do CComTearOffObject obiektu. |
|
Zwraca wskaźnik do żądanego interfejsu klasy Odrywane lub klasę właściciela. |
|
Zmniejsza zliczanie odniesienia dla CComTearOffObject obiektu i niszczy ją. |
Metody CComTearOffObjectBase
Konstruktor. |
Członkowie CComTearOffObjectBase danych
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