Freigeben über


CComClassFactorySingleton-Klasse

Diese Klasse wird von CComClassFactory abgeleitet und verwendet CComObjectGlobal , um ein einzelnes Objekt zu erstellen.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parameter

T
Ihr Kurs.

CComClassFactorySingleton abgeleitet von CComClassFactory und verwendet CComObjectGlobal , um ein einzelnes Objekt zu erstellen. Jeder Aufruf der CreateInstance Methode fragt dieses Objekt einfach nach einem Schnittstellenzeiger ab.

Member

Öffentliche Methoden

Name Beschreibung
CComClassFactorySingleton::CreateInstance Fragt m_spObj nach einem Schnittstellenzeiger ab.

Öffentliche Datenmember

Name Beschreibung
CComClassFactorySingleton::m_spObj Das von CComClassFactorySingletonCComObjectGlobal erstellte Objekt .

Hinweise

ATL-Objekte erwerben normalerweise eine Klassenfactory, indem sie von CComCoClass abgeleitet wird. Diese Klasse enthält das Makro DECLARE_CLASSFACTORY, das als Standardklassenfactory deklariert wird CComClassFactory . Geben Sie zum Verwenden CComClassFactorySingletondas DECLARE_CLASSFACTORY_SINGLETON Makro in der Klassendefinition des Objekts an. Zum Beispiel:

class ATL_NO_VTABLE CMySingletonClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
   public IMySingletonClass
{
public:
   DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)

   // Remainder of class declaration omitted.

Vererbungshierarchie

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Anforderungen

Kopfzeile: atlcom.h

CComClassFactorySingleton::CreateInstance

Aufrufe QueryInterface über m_spObj zum Abrufen eines Schnittstellenzeigers.

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

Parameter

pUnkOuter
[in] Wenn das Objekt als Teil eines Aggregats erstellt wird, muss "pUnkOuter " das äußere Unbekannte sein. Andernfalls muss "pUnkOuter" NULL sein.

riid
[in] Die IID der angeforderten -Schnittstelle. Wenn pUnkOuter ungleich NULL ist, muss riid sein IID_IUnknown.

ppvObj
[out] Ein Zeiger auf den Schnittstellenzeiger, der von riid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObj auf NULL festgelegt.

Rückgabewert

Ein HRESULT-Standardwert.

CComClassFactorySingleton::m_spObj

Das von CComClassFactorySingletonCComObjectGlobal erstellte Objekt .

CComPtr<IUnknown> m_spObj;

Hinweise

Jeder Aufruf der CreateInstance-Methode fragt dieses Objekt einfach nach einem Schnittstellenzeiger ab.

Beachten Sie, dass die aktuelle Form der m_spObj Darstellung einer unterbrechungsweisen Änderung von der Funktionsweise CComClassFactorySingleton in früheren Versionen von ATL stammt. In früheren Versionen wurde das CComClassFactorySingleton Objekt gleichzeitig mit der Klassenfactory erstellt, während der Serverinitialisierung. In Visual C++.NET 2003 und höher wird das Objekt in der ersten Anforderung lazily erstellt. Diese Änderung kann zu Fehlern in Programmen führen, die auf einer frühen Initialisierung basieren.

Siehe auch

IClassFactory
CComClassFactory2-Klasse
CComClassFactoryAutoThread-Klasse
CComObjectRootEx-Klasse
CComGlobalsThreadModel
Klassenübersicht