CComClassFactorySingleton, classe
Cette classe dérive de CComClassFactory et utilise CComObjectGlobal pour construire un seul objet.
Important
Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.
Syntaxe
template<class T>
class CComClassFactorySingleton : public CComClassFactory
Paramètres
T
Votre classe.
CComClassFactorySingleton
dérive de CComClassFactory et utilise CComObjectGlobal pour construire un seul objet. Chaque appel à la CreateInstance
méthode interroge simplement cet objet pour un pointeur d’interface.
Membres
Méthodes publiques
Nom | Description |
---|---|
CComClassFactorySingleton ::CreateInstance | Requêtes m_spObj pour un pointeur d’interface. |
Membres de données publics
Nom | Description |
---|---|
CComClassFactorySingleton ::m_spObj | Objet CComObjectGlobal construit par CComClassFactorySingleton . |
Notes
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 utiliser CComClassFactorySingleton
, spécifiez la macro DECLARE_CLASSFACTORY_SINGLETON dans la définition de classe de votre objet. Par exemple :
class ATL_NO_VTABLE CMySingletonClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
public IMySingletonClass
{
public:
DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)
// Remainder of class declaration omitted.
Hiérarchie d'héritage
CComObjectRootBase
IClassFactory
CComClassFactorySingleton
Spécifications
En-tête : atlcom.h
CComClassFactorySingleton ::CreateInstance
Appelle QueryInterface
m_spObj pour récupérer un pointeur d’interface.
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.
CComClassFactorySingleton ::m_spObj
Objet CComObjectGlobal construit par CComClassFactorySingleton
.
CComPtr<IUnknown> m_spObj;
Notes
Chaque appel à la méthode CreateInstance interroge simplement cet objet pour un pointeur d’interface.
Notez que la forme actuelle présente m_spObj
un changement cassant de la façon dont les CComClassFactorySingleton
versions précédentes d’ATL ont fonctionné. Dans les versions précédentes, l’objet CComClassFactorySingleton
a été créé en même temps que la fabrique de classes, lors de l’initialisation du serveur. Dans Visual C++.NET 2003 et versions ultérieures, l’objet est créé de manière différée, lors de la première requête. Cette modification peut entraîner des erreurs dans les programmes qui s’appuient sur l’initialisation anticipée.
Voir aussi
IClassFactory
CComClassFactory2, classe
CComClassFactoryAutoThread, classe
CComObjectRootEx, classe
CComGlobalsThreadModel
Vue d’ensemble de la classe