Статья: Оформление класса в виде COM объекта в C++

Статья: Оформление класса в виде COM объекта в C++




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Оформление класса в виде COM объекта.
Допустим у вас есть некоторое приложение, написанное на C++(VC++ если быть корректным). Как оно у вас появилось не суть важно, может быть это ваша старая разработка, может быть вы решили сначала отладить предметную часть. Важно то что вы горите желанием вынести часть классов в объектные модули и оформить их в виде ActiveX, COM и ATL объектов. Есть несколько типовых проблем связанных с таким переносом.
Знакомо и очень удобно, но в COM правила создания объекта строго определены и ни одна из функции для созданий объектов не позволяет передавать параметры конструктору класса.
Настройку объекта придется вынести в отдельный метод например Init.
// IMyCOM cтандартная обертка наследник от COleDispatchDriver
d->Init(15,"Матрица"); // Инициализируем
В принципе вы можете создать свою фабрику объектов. Это позволит создавать объекты вот так.
IMyCOM Ob3(d->CraeteFull(15,SSS ));
Но зачем вам лишний промежуточный объект если можно обойтись без него.
Это вполне законный код С++, но COM не разрешит вам в интерфейсе объявить два метода с одним именем. Это противоречит концепции.
Можно связать функции с разными методами интерфейса для этого в odl пишим
DISP_FUNCTION(CPSDG, "AddRecName", AddRec, VTS_BSTR, VTS_BSTR)
DISP_FUNCTION(CPSDG, "AddRecId", AddRec, VTS_BSTR, VTS_I2)
Можно написать прокси функции. Например для GetMyRec прототип может выглядеть так
{case VT_I4: { return GetMyRec(id.lVal); }
case VT_BSTR: { return GetMyRec(id.bstrVal); }
Для функции AddRec можно сделать вот так
HRESULT AddRec (VARIANT id, VARIANT Name)
if ((id.vt==VT_EMPTY)&&(Name.vt==VT_EMPTY))
if ((id.vt==VT_I4)&&(Name.vt==VT_EMPTY))
if ((id.vt==VT_I4)&&(Name.vt== VT_BSTR))
{AddRec(id.lVal, Name. bstrVal ) ; return S_OK;}
Этого вполне достаточно, но можно еще изменить объявление метода интерфейса в odl вот так
HRESULT Add(VARIANT [optional, in]id, [optional,in]VARIANT S);
это позволит вызывать метод , более красиво.
MyObject.Add // Любой из вариантов должен работать
В сложном проекте полно собственных констант, структур, множеств используемых в качестве параметров .
Понятно что, для того чтобы подобным образом можно было вызывать методы COM объекта, служебные структуры, множества и константы должны быть доступны из вне.
Для этого нужно включить их описание в ODL файл.
Передавать в качестве параметров структуры тоже можно. Такие структуры называются UDT - User Defined Type. В IDL описываютсятак:
Typedef [uuid(C1D3A8C0-A4AA-11D0-819C-00A0C90FFFC3)] struct UDT
Описывать параметры метода можно как VARIANT но тогда придется работать с интерфесом IRecordInfo или как UDT:
Передать UDT в такой метод проще простого:
p->Do(&some_data, some_returned_data);
Членами UDT могут быть другие UDT или oleautomation-совместимые типы.
У вы в VC нет автоматизации позволяющей создавать пользовательские типы поэтом у все придется делать ручками

Название: Оформление класса в виде COM объекта в C++
Раздел: Рефераты по информатике, программированию
Тип: статья
Добавлен 03:47:07 21 марта 2007 Похожие работы
Просмотров: 60
Комментариев: 16
Оценило: 3 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Если Вам нужна помощь с учебными работами, ну или будет нужна в будущем (курсовая, дипломная, отчет по практике, контрольная, РГР, решение задач, онлайн-помощь на экзамене или "любая другая" учебная работа...) - обращайтесь: https://clck.ru/P8YFs - (просто скопируйте этот адрес и вставьте в браузер) Сделаем все качественно и в самые короткие сроки + бесплатные доработки до самой сдачи/защиты! Предоставим все необходимые гарантии.
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Статья: Оформление класса в виде COM объекта в C++
Реферат: Ассортимент чая. Скачать бесплатно и без регистрации
Сочинение по теме Джон Апдайк. Кролик, беги
Реферат: Юридическая трактовка проституции, как социального явления
Курсовая работа по теме Собственность в системе экономических отношений
Никколо Макиавелли Был Автором Сочинения Под Названием
Реферат: Инженерно-геологическая оценка участка, предназначенного для строительства
Курсовая работа: Кризис-менеджмент
Контрольная работа по теме Молодежный сленг и его отражение в современных СМИ
Сочинение Описание Зайца 4 Класс
Реферат по теме Определение содержания бизнес-плана
Реферат: Понятие налогов и их экономическая сущность в Республике Казахстан
Реферат по теме Аудит нематеральных активов
Практическое задание по теме Рынок ценных бумаг
Реферат По Истории На Тему Крещение Руси
Сочинение 1 1 Класс Экзамен
Синтез ЖК из пальмитиновой и других ЖК
Дипломная работа по теме Пищевые кислоты в питании
Реферат Solidworks
Князь Игорь Реферат По Музыке
Структура Эссе Без Цитаты
Реферат: Оцінка фінансового стану підприємства
Курсовая работа: Неформальные лидеры в местах лишения свободы
Реферат: Аэробика

Report Page