Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Diese Klasse implementiert IUnknown für ein nicht aggregiertes Objekt.
Syntax
template<class Base>
class CComObject : public Base
Parameter
Bemessungsgrundlage
Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für das Objekt unterstützen möchten.
Member
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| CComObject::CComObject | Der Konstruktor. |
| CComObject::~CComObject | Der Destruktor. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| CComObject::AddRef | Erhöht die Verweisanzahl für das Objekt. |
| CComObject::CreateInstance | (Statisch) Erstellt ein neues CComObject Objekt. |
| CComObject::QueryInterface | Ruft einen Zeiger auf die angeforderte Schnittstelle ab. |
| CComObject::Release | Erhöht die Verweisanzahl für das Objekt. |
Hinweise
CComObjectimplementiert IUnknown für ein nicht aggregiertes Objekt. Aufrufe an QueryInterfaceAddRef, und Release werden an CComObjectRootExdelegiert.
Weitere Informationen zur Verwendung CComObjectfinden Sie im Artikel Grundlagen von ATL COM-Objekten.
Vererbungshierarchie
Base
CComObject
Anforderungen
Kopfzeile: atlcom.h
CComObject::AddRef
Erhöht die Verweisanzahl für das Objekt.
STDMETHOD_(ULONG, AddRef)();
Rückgabewert
Diese Funktion gibt die neue inkrementierte Verweisanzahl für das Objekt zurück. Dieser Wert kann für Diagnosen oder Tests nützlich sein.
CComObject::CComObject
Der Konstruktor erhöht die Anzahl der Modulsperren.
CComObject(void* = NULL);
Parameter
Leere*
[in] Dieser unbenannte Parameter wird nicht verwendet. Es ist für Symmetrie mit anderen CComXXXObjectXXX Konstruktoren vorhanden.
Hinweise
Der Destruktor erhöht ihn.
Wenn ein abgeleitetes CComObjectObjekt erfolgreich mithilfe des new Operators erstellt wird, ist die anfängliche Referenzanzahl 0. Um die Verweisanzahl auf den richtigen Wert (1) festzulegen, rufen Sie die AddRef-Funktion auf.
CComObject::~CComObject
Der Destruktor.
CComObject();
Hinweise
Gibt alle zugeordneten Ressourcen frei, ruft FinalRelease auf und erhöht die Modulsperranzahl.
CComObject::CreateInstance
Mit dieser statischen Funktion können Sie ein neues CComObject-ObjektBase>< erstellen, ohne den Aufwand von CoCreateInstance.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Parameter
PP
[out] Ein Zeiger auf einen CComObject-Zeiger><Base. Wenn CreateInstance dies nicht erfolgreich ist, wird pp auf NULL festgelegt.
Rückgabewert
Ein HRESULT-Standardwert.
Hinweise
Das zurückgegebene Objekt weist eine Bezugsanzahl von Null auf. Rufen Sie also sofort auf AddRef , um Release den Verweis auf den Objektzeiger freizugeben, wenn Sie fertig sind.
Wenn Sie keinen direkten Zugriff auf das Objekt benötigen, aber dennoch ein neues Objekt erstellen möchten, ohne den Aufwand CoCreateInstancezu haben, verwenden Sie stattdessen CComCoClass::CreateInstance .
Beispiel
class ATL_NO_VTABLE CMyCircle :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCircle, &CLSID_MyCircle>,
public IDispatchImpl<IMyCircle, &IID_IMyCircle, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CMyCircle()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_MYCIRCLE)
DECLARE_NOT_AGGREGATABLE(CMyCircle)
BEGIN_COM_MAP(CMyCircle)
COM_INTERFACE_ENTRY(IMyCircle)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
public:
STDMETHOD(get_XCenter)(double* pVal);
};
// Create a local instance of COM object CMyCircle.
double x;
CComObject<CMyCircle>* pCircle;
HRESULT hRes = CComObject<CMyCircle>::CreateInstance(&pCircle);
ATLASSERT(SUCCEEDED(hRes));
// Increment reference count immediately
pCircle->AddRef();
// Access method of COM object
hRes = pCircle->get_XCenter(&x);
// Decrement reference count when done
pCircle->Release();
pCircle = NULL;
CComObject::QueryInterface
Ruft einen Zeiger auf die angeforderte Schnittstelle ab.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parameter
iid
[in] Der Bezeichner der angeforderten Schnittstelle.
ppvObject
[out] Ein Zeiger auf den Schnittstellenzeiger, der durch iid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObject auf NULL festgelegt.
PP
[out] Ein Zeiger auf den Schnittstellenzeiger, der vom Typ Qidentifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird pp auf NULL festgelegt.
Rückgabewert
Ein HRESULT-Standardwert.
CComObject::Release
Erhöht die Verweisanzahl für das Objekt.
STDMETHOD_(ULONG, Release)();
Rückgabewert
Diese Funktion gibt die neue dekrementierte Verweisanzahl für das Objekt zurück. In Debugbuilds kann der Rückgabewert für Diagnosen oder Tests nützlich sein. Gibt in Nicht-Debug-Builds Release immer "0" zurück.
Siehe auch
CComAggObject-Klasse
CComPolyObject-Klasse
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Klassenübersicht