Макросы сопоставления объектов
Эти макросы определяют карты объектов и записи.
Имя | Описание |
---|---|
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