Атрибуты C++. Резюме.
Создание простого проекта на основе библиотеки шаблонных классов ATL (Simple ATL Project)
Создайте проект на основе ATL Server (ATL Server Project):
- Выберите пункт меню Fiie › New (Файл › Создать). Откроется диалог New Project (Создание проекта).
- Выберите Visual C++ Projects (Проекты на Visual C++) в окне Project Types (Типы проектов).
- Выберите ATL Project (Проект на основе библиотеки шаблонных классов ATL) в окне Templates (Шаблоны).
- Введите MyATLProject в поле Name (Название)
- Задайте в поле Location (Расположение) папку, в которой будет сохранен проект.
- Щелкните на кнопке ОК для вызова Мастера проектов на основе библиотеки шаблонных классов (ATL) (ATL Project Wizard).
- Выберите вкладку Application Settings (Параметры приложения).
- Убедитесь, что флажок Attributed установлен.
- Щелкните на кнопке Finish (Готово). Создайте простой объект на основе библиотеки шаблонных классов (ATL):
- Выберите пункт меню Project › Add Class (Проект › Добавить класс). Откроется диалог Add Class (Добавление класса).
- Выберите ATL Simple Object (Простой объект на основе библиотеки шаблонных классов (ATL)) в качестве шаблона (Template).
- Щелкните на кнопке Open (Открыть) для вызова Мастера простых объектов на основе библиотеки шаблонных классов (ATL) (ATL Simple Object Wizard).
- Введите MyAtlClass в поле Short name (Короткое название).
- Щелкните на кнопке Finish (Готово) для создания проекта.
Добавьте метод в простой объект на основе библиотеки шаблонных классов (ATL): - Щелкните правой кнопкой на интерфейсе IMyAtlClass в окне Class View (Просмотр классов).
- Выберите пункт меню Add › Add Method (Добавить › Добавить метод). Откроется Мастер добавления методов (Add Method wizard).
- В качестве названия метода введите AddEmUp в поле Method name (Название метода).
- Выберите LONG в списке Parameter type (Тип параметра).
- В качестве имени параметра введите i в поле Parameter name (Имя параметра).
- Установите флажок in (входной).
- Щелкните на кнопке Add (Добавить).
- Выберите LONG в списке Parameter type (Тип параметра).
- В качестве имени параметра введите j в поле Parameter name (Имя параметра).
- Установите флажок in (входной).
- Щелкните на кнопке Add (Добавить).
- Выберите LONG в списке Parameter type (Тип параметра).
- В качестве имени параметра введите psum в поле Parameter name (Имя параметра).
- Установите флажки out (выходной) и retval.
- Щелкните на кнопке Add (Добавить).
- Щелкните на кнопке Finish (Готово).
// IMyAtlClass [ object, // объект uuid("lF9401D8-58BF-469D-845B-A2069CBAFC84"), dual, helpstring("IMyAtlClass Interface"), // двойной, // интерфейс pointer_default(unique) // уникальный ] _interface IMyAtlClass: IDispatch // интерфейс [id(l), helpstring("method AddEmUp")] HRESULT AddEmUp([in] LONG i, [in] LONG j, [out,retval] LONG* psum); };
Единственное, что осталось сделать в рассматриваемом примере, – вручную реализовать метод AddEmUp в файле MyAtlClass.cpp и скомпилировать приложение. Реализация этого метода приведена ниже:
STDMETHODIMP CMyAtlClass::AddEmUp(LONG i, LONG ], LONG* psum) { // TODO: Add your implementation code here // TODO: Добавьте ваш код реализации здесь *psum = i+j; // добавлен вручную return S_OK; }
Создав приложение, его можно протестировать с помощью программы-клиента на основе модели компонентных объектов Microsoft (COM). Мы не будем рассматривать здесь как это можно сделать поскольку создание такой программы предполагает применение обычного стиля программирования на устаревшем Visual Basic или Visual C++. Для получения более подробной информации рекомендуем обратиться к документации по Visual Studio или к любой из множества отличных книг в этой области (например, Understanding and Programming СОМ+, написанной Робертом Дж Обергом (Robert J. Oberg)).
Резюме
В этой главе рассмотрено использование расширений C++ при создании программ и компонентов для платформы NET. Изложение основных концепций создания управляемого кода на С++ проиллюстрировано на многих примерах, таких, как HelloWorld (Привет, мир), ConvertTemp и др. Были рассмотрены классы String (Строка) и Array (Массив) активно используемые почти во всех типах приложений NET. Подробно изучены ключевые слова расширения управляемости C++. Рассмотрены также делегаты, события и управление обработкой исключений. Напоследок проанализировано использование атрибутов С++ для создания компонентов на основе модели компонентных объектов Miciosott (COM)