Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
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