Атрибуты C++. Резюме.
Мастер простых объектов на основе библиотеки шаблонных классов (ATL) (ATL Simple Object Wizard) добавит приведенный ниже исходный код с атрибутами в файл MyAtlClass.h, а не в файл IDL. Обратите внимание, что атрибуты object (объект), uuid (universally unique identifier– универсальный уникальный идентификатор) и dual (двойной) используются для описания интерфейсов, а атрибуты coclass, progid (программный идентификатор) и version (версия)– для описания классов на основе модели компонентных объектов Microsoft (COM). Эти атрибуты находятся непосредственно в исходном коде C++, поэтому файл IDL не нужен.
// IMyAtlClass [ object, // объект uuid("lF9401D8-58BF-469D-845B-A2069CBAFC84"), dual, helpstring("IMyAtlClass Interface"), // двойной, Интерфейс pointer_default(unique) // уникальный ] _interface IMyAtlClass: IDispatch // интерфейс { }; // CMyAtlClass [ coclass, threading("apartment"), vi_progid("MyATLProject.MyAtlClass"), progid("MyATLProject.MyAtlClass.1"), // программный идентификатор version(1.0), // версия uuid("B3321AD5-3ACE-4820-B134-35FD67120A48"), helpstring("MyAtIClass Class") // Класс { class ATL_NO_VTA5LE CKyAtlClass: // классс public IMyAtlClass { public: CMyAtlClass() { } DECLARE_PROTECT_FINAL_CONSTRuCT() HRESULT FinalCor.struct () { return S_OK; } void FinalReiease() { } public: };
В приведенном коде используется атрибут сoсlass, но при этом опущена некоторая информация, присутствующая в коде, сгенерированное прежними версиями АТI_. Например, отсутствуют карты объектов, карты интерфейсов и сценарии системного реестра. Атрибут coclass обеспечивает все эти, казалось бы, пропущенные возможности. Пропущенный код будет автоматически добавлен компилятором при обработке атрибута coclass.
На рис. 3.6 показан диалог Add Method (Добавление метода), используемый для добавления метода AadEmUp. Обратите внимание на указание атрибутов in (входной), cut (выходной) и retval.
Они обусловливают добавление в файл KyAriciass.h приведенного ниже кода. Еще раз обратим ваше внимание на то, что атрибуты используются и исходном файле СРР, а не в отдельном файле IDL.
Рис. 3.6. Диалог Мастера добавления методов (Add Method wizard) позволяет указать атрибуты параметра