更改默认选件类工厂和摘要模型

ATL使用 CComCoClass 定义默认选件类工厂和摘要设计您的对象的。CComCoClass 指定下面两个宏:

通过指定另一个宏重写这些默认之一在类定义中。例如,使用 CComClassFactory2 而不是 CComClassFactory,请指定 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

定义选件类工厂的其他两宏是 DECLARE_CLASSFACTORY_AUTO_THREADDECLARE_CLASSFACTORY_SINGLETON

ATL还使用 typedef framework实现默认行为。例如,DECLARE_AGGREGATABLE 宏使用 typedef 定义调用 _CreatorClass的类型,然后引用在ATL中。请注意在派生类中,使用名称的 typedef 和在ATL的基类的 typedef 结果相同使用您的定义和重写默认行为。

请参见

参考

ATL COM对象的基本知识

其他资源

摘要任务和选件类工厂宏