Partager via


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

CComClassFactoryimplé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_CLASSFACTORYdes 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 :

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