Share via


CComClassFactory-klasse

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:

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