CComTearOffObject-Klasse
Diese Klasse implementiert eine Tearoff-Schnittstelle.
template<
class Base
>
class CComTearOffObject :
public Base
Parameter
- Base
Tearoffe die Klasse, abgeleitet von CComTearOffObjectBase und Schnittstellen möchten Sie das Tearoffes Objekt zur Unterstützung.
ATL implementiert ihre Tearoff-Schnittstellen in zwei Phasen - die CComTearOffObjectBase-Methoden behandeln den Verweiszähler und QueryInterface, während CComTearOffObjectIUnknown implementiert.
Mitglieder
Öffentliche Konstruktoren
Name |
Description |
---|---|
Der -Konstruktor. |
|
Der Destruktor. |
Öffentliche Methoden
Name |
Description |
---|---|
Inkrementiert den Verweiszähler für ein CComTearOffObject-Objekt. |
|
Gibt einen Zeiger auf die angeforderte Schnittstelle auf jedem Tearoffe die Klasse oder die Besitzerklasse zurück. |
|
Dekrementiert den Verweiszähler für ein CComTearOffObject-Objekt zerstört und ihn. |
CComTearOffObjectBase-Methoden
Konstruktor. |
CComTearOffObjectBase-Datenmember
Ein Zeiger auf CComObject berechnete aus der Besitzerklasse. |
Hinweise
CComTearOffObject implementiert eine Tearoff-Schnittstelle als separates Objekt, das instanziiert wird, wenn diese Schnittstelle für abgefragt wird.Das Tearoff wird gelöscht, wenn sein Zähler auf Null ist.Normalerweise erstellen Sie eine Tearoff-Schnittstelle für eine Schnittstelle, die selten verwendet wird, da ein, Tearoff verwenden, einen Zeiger in allen Instanzen des Hauptzwecks speichert.
Sie sollten die Klasse ableiten, die das Tearoff von CComTearOffObjectBase implementiert und von, welche Schnittstellen Sie das Tearoffes Objekt zur Unterstützung soll.CComTearOffObjectBase ist auf der Besitzerklasse und dem Threadmodell vorlagenbasierten.Die Besitzerklasse ist die Klasse des Objekts, für das ein Tearoff implementiert wird.Wenn Sie kein Threadmodell angeben, wird das standardmäßige Threadmodell verwendet.
Sie sollten eine COM-Zuordnung für die Tearoffe Klasse erstellen.Wenn das ATL Tearoff instanziiert, erstellt er CComTearOffObject<CYourTearOffClass> oder CComCachedTearOffObject<CYourTearOffClass>.
Beispielsweise im - Beispiel, ist die CBeeper2-Klasse die Tearoffe Klasse und die CBeeper-Klasse ist die Besitzerklasse:
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:
};
Vererbungshierarchie
Base
CComTearOffObject
Anforderungen
Header: möchten
Siehe auch
Referenz
CComCachedTearOffObject-Klasse