Condividi tramite


Modifica della class factory e del modello di aggregazione predefiniti

ATL usa CComCoClass per definire la class factory predefinita e il modello di aggregazione per l'oggetto. CComCoClass specifica le due macro seguenti:

  • DECLARE_CLASSFACTORY dichiara che la class factory deve essere CComClassFactory.

  • DECLARE_AGGREGATABLE dichiara che l'oggetto può essere aggregato.

È possibile eseguire l'override di una di queste impostazioni predefinite specificando un'altra macro nella definizione della classe. Ad esempio, per usare CComClassFactory2 anziché CComClassFactory, specificare 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

Altre due macro che definiscono una class factory sono DECLARE_CLASSFACTORY_AUTO_THREAD e DECLARE_CLASSFACTORY_SINGLETON.

ATL usa anche il meccanismo per implementare il typedef comportamento predefinito. Ad esempio, la macro DECLARE_AGGREGATABLE usa typedef per definire un tipo denominato _CreatorClass, a cui viene quindi fatto riferimento in ATL. Si noti che in una classe derivata un typedef oggetto che usa lo stesso nome dei risultati della typedef classe di base in ATL usando la definizione ed eseguendo l'override del comportamento predefinito.

Vedi anche

Nozioni fondamentali sugli oggetti COM ATL
Macro di aggregazione e class factory