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.
Met deze klasse wordt de IClassFactory-interface geïmplementeerd.
Syntaxis
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Leden
Openbare methoden
| Naam | Description |
|---|---|
| CComClassFactory::CreateInstance | Hiermee maakt u een object van de opgegeven CLSID. |
| CComClassFactory::LockServer | Vergrendelt de klassefactory in het geheugen. |
Opmerkingen
CComClassFactory implementeert de IClassFactory-interface , die methoden bevat voor het maken van een object van een bepaalde CLSID, en het vergrendelen van de klassefactory in het geheugen, zodat nieuwe objecten sneller kunnen worden gemaakt.
IClassFactory moet worden geïmplementeerd voor elke klasse die u registreert in het systeemregister en waaraan u een CLSID toewijst.
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 deze standaardwaarde wilt overschrijven, geeft u een van de DECLARE_CLASSFACTORY XXX-macro's op in uw klassedefinitie. De DECLARE_CLASSFACTORY_EX macro gebruikt bijvoorbeeld de opgegeven klasse voor de klassefactory:
class ATL_NO_VTABLE CMyCustomClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
DECLARE_CLASSFACTORY_EX(CMyClassFactory)
// Remainder of class declaration omitted.
De bovenstaande klassedefinitie geeft aan dat CMyClassFactory wordt gebruikt als de standaardklassefactory van het object.
CMyClassFactory moet worden afgeleid van CComClassFactory en overschrijven CreateInstance.
ATL biedt drie andere macro's die een klassefactory declareren:
DECLARE_CLASSFACTORY2 Maakt gebruik van CComClassFactory2, waarmee het maken via een licentie wordt gecontroleerd.
DECLARE_CLASSFACTORY_AUTO_THREAD Maakt gebruik van CComClassFactoryAutoThread, waarmee objecten in meerdere appartementen worden gemaakt.
DECLARE_CLASSFACTORY_SINGLETON Maakt gebruik van CComClassFactorySingleton, waarmee één CComObjectGlobal-object wordt samengesteld.
Requirements
Koptekst: atlcom.h
CComClassFactory::CreateInstance
Hiermee maakt u een object van de opgegeven CLSID en haalt u een interfaceaanwijzer naar dit object op.
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.
CComClassFactory::LockServer
Hiermee wordt het aantal modulevergrendelingen verhoogd en verminderd door respectievelijk aanroepen _Module::Lock en _Module::Unlock, .
STDMETHOD(LockServer)(BOOL fLock);
Parameterwaarden
Kudde
[in] Indien WAAR, wordt het aantal vergrendelingen verhoogd; anders wordt het aantal vergrendelingen afgebroken.
Retourwaarde
Een standaard HRESULT-waarde.
Opmerkingen
_Module verwijst naar het globale exemplaar van CComModule of een klasse die ervan is afgeleid.
Door aanroepen LockServer kan een client een klassefactory vasthouden, zodat meerdere objecten snel kunnen worden gemaakt.
Zie ook
CComObjectRootEx-klasse
CComGlobalsThreadModel
Overzicht van klassen