Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze klasse is afgeleid van CComClassFactory en maakt gebruik van CComObjectGlobal om één object te maken.
Belangrijk
Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.
Syntaxis
template<class T>
class CComClassFactorySingleton : public CComClassFactory
Parameterwaarden
T
Je klas.
CComClassFactorySingleton is afgeleid van CComClassFactory en gebruikt CComObjectGlobal om één object te maken. Elke aanroep van de CreateInstance methode voert gewoon een query uit op dit object voor een interfaceaanwijzer.
Leden
Openbare methoden
| Naam | Description |
|---|---|
| CComClassFactorySingleton::CreateInstance | Query's m_spObj voor een interfaceaanwijzer. |
Publieke dataleden
| Naam | Description |
|---|---|
| CComClassFactorySingleton::m_spObj | Het CComObjectGlobal-object gemaakt door CComClassFactorySingleton. |
Opmerkingen
ATL-objecten verwerven normaal gesproken een klassefactory door afgeleid van CComCoClass. Deze klasse bevat de macro-DECLARE_CLASSFACTORY, die declareert CComClassFactory als de standaardklassefactory. Als u wilt gebruiken CComClassFactorySingleton, geeft u de DECLARE_CLASSFACTORY_SINGLETON macro op in de klassedefinitie van uw object. Voorbeeld:
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.
Overnamehiërarchie
CComObjectRootBase
IClassFactory
CComClassFactorySingleton
Requirements
Koptekst: atlcom.h
CComClassFactorySingleton::CreateInstance
Roept QueryInterfacem_spObj aan om een interfaceaanwijzer op te halen.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parameterwaarden
pUnkOuter
[in] Als het object wordt gemaakt als onderdeel van een statistische functie, moet pUnkOuter het buitenste onbekende object zijn. Anders moet pUnkOuter NULL zijn.
riid
[in] De IID van de aangevraagde interface. Als pUnkOuter niet null is, moet riid zijn IID_IUnknown.
ppvObj
[uit] Een aanwijzer naar de interfacepointer die wordt geïdentificeerd door riid. Als het object deze interface niet ondersteunt, is ppvObj ingesteld op NULL.
Retourwaarde
Een standaard HRESULT-waarde.
CComClassFactorySingleton::m_spObj
Het CComObjectGlobal-object gemaakt door CComClassFactorySingleton.
CComPtr<IUnknown> m_spObj;
Opmerkingen
Elke aanroep van de Methode CreateInstance voert eenvoudig een query uit op dit object voor een interfaceaanwijzer.
Houd er rekening mee dat de huidige vorm van m_spObj een wijziging die fouten vertoont ten opzichte van de manier waarop CComClassFactorySingleton in eerdere versies van ATL werkte. In eerdere versies is het CComClassFactorySingleton object gemaakt op hetzelfde moment als de klassefactory, tijdens de serverinitialisatie. In Visual C++.NET 2003 en hoger wordt het object lazily gemaakt op de eerste aanvraag. Deze wijziging kan fouten veroorzaken in programma's die afhankelijk zijn van vroege initialisatie.
Zie ook
IClassFactory
CComClassFactory2-klasse
CComClassFactoryAutoThread-klasse
CComObjectRootEx-klasse
CComGlobalsThreadModel
Overzicht van klassen