Modification de la fabrique de classe et du modèle d’agrégation par défaut

ATL utilise CComCoClass pour définir la fabrique de classes et le modèle d’agrégation par défaut pour votre objet. CComCoClass spécifie les deux macros suivantes :

  • DECLARE_CLASSFACTORY déclare la fabrique de classe à CComClassFactory.

  • DECLARE_AGGREGATABLE Déclare que votre objet peut être agrégé.

Vous pouvez remplacer l’une de ces valeurs par défaut en spécifiant une autre macro dans votre définition de classe. Par exemple, pour utiliser CComClassFactory2 au lieu de CComClassFactory, spécifiez la macro DECLARE_CLASSFACTORY2 :

class ATL_NO_VTABLE CMyClass2 :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyClass2, &CLSID_MyClass>,
   public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
   public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
   DECLARE_CLASSFACTORY2(CMyLicense)

   // Remainder of class declaration omitted

Deux autres macros qui définissent une fabrique de classes sont DECLARE_CLASSFACTORY_AUTO_THREAD et DECLARE_CLASSFACTORY_SINGLETON.

ATL utilise également le mécanisme pour implémenter le typedef comportement par défaut. Par exemple, la macro DECLARE_AGGREGATABLE utilise typedef pour définir un type appelé _CreatorClass, qui est ensuite référencé dans ATL. Notez que dans une classe dérivée, une typedef utilisation du même nom que les résultats de la classe de base dans typedef ATL à l’aide de votre définition et en remplaçant le comportement par défaut.

Voir aussi

Principes de base des objets ATL COM
Agrégation et macros de fabrique de classe