Classe di CComClassFactory
Questa classe implementa l'interfaccia IClassFactory.
class CComClassFactory : public IClassFactory,
public CComObjectRootEx< CComGlobalsThreadModel >
Membri
Metodi pubblici
Nome |
Descrizione |
---|---|
Crea un oggetto del CLSID specificato. |
|
Blocca il class factory in memoria. |
Note
CComClassFactory implementa l'interfaccia IClassFactory, che contiene metodi per creare un oggetto di un CLSID particolare nonché blocca il class factory in memoria per consentire i nuovi oggetti da creare rapidamente.IClassFactory deve essere implementato per ogni classe che registra nel Registro di sistema e a cui assegnare a un CLSID.
Gli oggetti ATL in genere acquisiscono una class factory derivazione da CComCoClass.Questa classe include macro DECLARE_CLASSFACTORY, che dichiara CComClassFactory come la factory della classe predefinita.Per ignorare questa impostazione predefinita, specificare una delle macro DECLARE_CLASSFACTORYXXX nella definizione della classe.Ad esempio, la macro DECLARE_CLASSFACTORY_EX utilizza la classe specificata per il class factory:
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.
La definizione della classe sopra specifica che CMyClassFactory verrà utilizzato come la factory della classe predefinita dell'oggetto.CMyClassFactory deve derivare da CComClassFactory ed eseguire l'override CreateInstance.
ATL fornisce altre tre macro che indica una class factory:
DECLARE_CLASSFACTORY2 utilizza CComClassFactory2, che controlla la creazione di una licenza.
DECLARE_CLASSFACTORY_AUTO_THREAD utilizza CComClassFactoryAutoThread, che crea oggetti in più apartment.
DECLARE_CLASSFACTORY_SINGLETON utilizza CComClassFactorySingleton, che crea un singolo oggetto CComObjectGlobal.
Requisiti
Header: atlcom.h