Freigeben über


CComClassFactory-Klasse

Diese Klasse implementiert die IClassFactory-Schnittstelle .

Syntax

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Member

Öffentliche Methoden

Name Beschreibung
CComClassFactory::CreateInstance Erstellt ein Objekt der angegebenen CLSID.
CComClassFactory::LockServer Sperrt die Klassenfactory im Arbeitsspeicher.

Hinweise

CComClassFactory implementiert die IClassFactory-Schnittstelle , die Methoden zum Erstellen eines Objekts einer bestimmten CLSID enthält, sowie das Sperren der Klassenfactory im Arbeitsspeicher, damit neue Objekte schneller erstellt werden können. IClassFactory muss für jede Klasse implementiert werden, die Sie in der Systemregistrierung registrieren und der Sie eine CLSID zuweisen.

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 . Um diese Standardeinstellung außer Kraft zu setzen, geben Sie eines der DECLARE_CLASSFACTORYXXX-Makros in Der Klassendefinition an. Beispielsweise verwendet das DECLARE_CLASSFACTORY_EX-Makro die angegebene Klasse für die Klassenfactory:

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.

Die obige Klassendefinition gibt an, dass CMyClassFactory als Standardklassenfactory des Objekts verwendet wird. CMyClassFactory muss von CComClassFactory und außer Kraft setzen CreateInstance.

ATL stellt drei weitere Makros bereit, die eine Klassenfactory deklarieren:

Anforderungen

Kopfzeile: atlcom.h

CComClassFactory::CreateInstance

Erstellt ein Objekt der angegebenen CLSID und ruft einen Schnittstellenzeiger auf dieses Objekt ab.

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.

CComClassFactory::LockServer

Erhöht und erhöht die Anzahl der Modulsperren durch Aufrufen _Module::Lock bzw _Module::Unlock.

STDMETHOD(LockServer)(BOOL fLock);

Parameter

Herde
[in] Wenn WAHR, wird die Sperranzahl erhöht; andernfalls wird die Sperranzahl erhöht.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

_Module bezieht sich auf die globale Instanz von CComModule oder eine von ihr abgeleitete Klasse.

Durch Das Aufrufen LockServer kann ein Client eine Klassenfactory speichern, sodass mehrere Objekte schnell erstellt werden können.

Siehe auch

CComObjectRootEx-Klasse
CComGlobalsThreadModel
Klassenübersicht