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