Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
ATL использует CComCoClass для определения фабрики классов по умолчанию и модели агрегирования для объекта.
CComCoClass указывает следующие два макроса:
DECLARE_CLASSFACTORY Объявляет фабрику классов, которая будет являться CComClassFactory.
DECLARE_AGGREGATABLE объявляет, что объект можно агрегировать.
Вы можете переопределить любой из этих значений по умолчанию, указав другой макрос в определении класса. Например, чтобы использовать 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_THREAD и DECLARE_CLASSFACTORY_SINGLETON.
ATL также использует typedef механизм для реализации поведения по умолчанию. Например, макрос DECLARE_AGGREGATABLE использует typedef для определения типа, который затем используется по всему ATL _CreatorClass. Обратите внимание, что в производном классе использование имени typedef, совпадающего с именем typedef базового класса, приводит к тому, что ATL использует ваше определение и переопределяет поведение по умолчанию.
См. также
Основы COM-объектов ATL
Макросы агрегирования и фабрики классов