Поделиться через


Макросы сопоставления объектов

Эти макросы определяют карты объектов и записи.

Имя Описание
DECLARE_OBJECT_DESCRIPTION Позволяет указать текстовое описание объекта класса, которое будет введено в карту объектов.
OBJECT_ENTRY_AUTO Вводит объект ATL в карту объектов, обновляет реестр и создает экземпляр объекта.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO Позволяет указать, что объект должен быть зарегистрирован и инициализирован, но не должен создаваться внешне через CoCreateInstance.

Требования

Заголовок: atlcom.h

DECLARE_OBJECT_DESCRIPTION

Позволяет указать текстовое описание объекта класса.

DECLARE_OBJECT_DESCRIPTION( x )

Параметры

x
[in] Описание объекта класса.

Замечания

ATL вводит это описание в карту объектов с помощью макроса OBJECT_ENTRY_AUTO .

DECLARE_OBJECT_DESCRIPTION реализует GetObjectDescription функцию, которую можно использовать для переопределения метода CComCoClass::GetObjectDescription .

Функция GetObjectDescription вызывается IComponentRegistrar::GetComponents. IComponentRegistrar — это интерфейс службы автоматизации, позволяющий регистрировать и отменять регистрацию отдельных компонентов в библиотеке DLL. При создании объекта Регистратора компонентов с помощью мастера проектов ATL мастер автоматически реализует IComponentRegistrar интерфейс. IComponentRegistrar обычно используется сервером транзакций Майкрософт.

Дополнительные сведения о мастере проектов ATL см. в статье "Создание проекта ATL".

Пример

class ATL_NO_VTABLE CMyDescribedClass :
   public CComObjectRoot,
   public CComCoClass<CMyDescribedClass, &CLSID_MyDescribedClass>
{
public:
   CMyDescribedClass()
   {
   }

   // Override CComCoClass::GetObjectDescription
   DECLARE_OBJECT_DESCRIPTION("My Described Object 1.0")
};

OBJECT_ENTRY_AUTO

Вводит объект ATL в карту объектов, обновляет реестр и создает экземпляр объекта.

OBJECT_ENTRY_AUTO( clsid, class )

Параметры

clsid
[in] CLSID класса COM, реализуемого классом C++ с именем класса.

class
[in] Имя класса C++, реализующего класс COM, представленный clsid.

Замечания

Макросы записи объекта помещаются в глобальной области видимости в проекте для поддержки регистрации, инициализации и создания класса.

OBJECT_ENTRY_AUTO вводит указатели функций класса создателя и функции класса-фабрики CreateInstance создателя для этого объекта в схему объектов ATL, созданную автоматически. При вызове CAtlComModule::RegisterServer обновляет системный реестр для каждого объекта на карте объектов.

В приведенной ниже таблице описывается, как сведения, добавленные в карту объектов, получены из класса, заданного в качестве второго параметра для этого макроса.

Сведения для Полученное из
Регистрация COM Макросы реестра
Создание фабрики классов Макросы фабрики классов
Создание экземпляра Макросы агрегирования
Регистрация категории компонентов Макросы категорий
Инициализация и очистка уровня класса ObjectMain

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO

Позволяет указать, что объект должен быть зарегистрирован и инициализирован, но не должен создаваться внешне через CoCreateInstance.

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )

Параметры

clsid
[in] CLSID класса COM, реализуемого классом C++ с именем класса.

class
[in] Имя класса C++, реализующего класс COM, представленный clsid.

Замечания

Макросы записи объекта помещаются в глобальной области видимости в проекте для поддержки регистрации, инициализации и создания класса.

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO позволяет указать, что объект должен быть зарегистрирован и инициализирован (см. OBJECT_ENTRY_AUTO для получения дополнительных сведений), но его нельзя использовать.CoCreateInstance

См. также

Макросы