CComClassFactory, classe
Cette classe implémente l’interface IClassFactory .
Syntaxe
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Membres
Méthodes publiques
Nom | Description |
---|---|
CComClassFactory ::CreateInstance | Crée un objet du CLSID spécifié. |
CComClassFactory ::LockServer | Verrouille la fabrique de classe en mémoire. |
Notes
CComClassFactory
implémente l’interface IClassFactory, qui contient des méthodes de création d’un objet d’un CLSID particulier, ainsi que le verrouillage de la fabrique de classes en mémoire pour permettre la création plus rapidement de nouveaux objets. IClassFactory
doit être implémenté pour chaque classe que vous inscrivez dans le registre système et à laquelle vous attribuez un CLSID.
Les objets ATL acquièrent normalement une fabrique de classes en dérivant de CComCoClass. Cette classe inclut la macro DECLARE_CLASSFACTORY, qui déclare CComClassFactory
comme fabrique de classes par défaut. Pour remplacer cette valeur par défaut, spécifiez l’une DECLARE_CLASSFACTORY
des macros XXX dans votre définition de classe. Par exemple, la macro DECLARE_CLASSFACTORY_EX utilise la classe spécifiée pour la fabrique de classes :
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 définition de classe ci-dessus spécifie qu’elle CMyClassFactory
sera utilisée comme fabrique de classe par défaut de l’objet. CMyClassFactory
doit dériver et CComClassFactory
remplacer CreateInstance
.
ATL fournit trois autres macros qui déclarent une fabrique de classes :
DECLARE_CLASSFACTORY2 utilise CComClassFactory2, qui contrôle la création via une licence.
DECLARE_CLASSFACTORY_AUTO_THREAD Utilise CComClassFactoryAutoThread, qui crée des objets dans plusieurs appartements.
DECLARE_CLASSFACTORY_SINGLETON Utilise CComClassFactorySingleton, qui construit un seul objet CComObjectGlobal.
Spécifications
En-tête : atlcom.h
CComClassFactory ::CreateInstance
Crée un objet du CLSID spécifié et récupère un pointeur d’interface vers cet objet.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Paramètres
pUnkOuter
[in] Si l’objet est créé dans le cadre d’un agrégat, pUnkOuter doit être l’inconnu externe. Sinon, pUnkOuter doit être NULL.
riid
[in] IID de l’interface demandée. Si pUnkOuter n’est pas NULL, riid doit être IID_IUnknown
.
ppvObj
[out] Pointeur vers le pointeur d’interface identifié par riid. Si l’objet ne prend pas en charge cette interface, ppvObj a la valeur NULL.
Valeur de retour
Valeur HRESULT standard.
CComClassFactory ::LockServer
Incrémente et décrémente le nombre de verrous du module en appelant _Module::Lock
et _Module::Unlock
, respectivement.
STDMETHOD(LockServer)(BOOL fLock);
Paramètres
troupeau
[in] Si la valeur est TRUE, le nombre de verrous est incrémenté ; sinon, le nombre de verrous est décrémenté.
Valeur de retour
Valeur HRESULT standard.
Notes
_Module
fait référence à l’instance globale de CComModule ou à une classe dérivée de celle-ci.
L’appel LockServer
permet à un client de conserver une fabrique de classes afin que plusieurs objets puissent être créés rapidement.
Voir aussi
CComObjectRootEx, classe
CComGlobalsThreadModel
Vue d’ensemble de la classe