Re: Best Practies добавления нового интерфейса
От: okman Беларусь https://searchinform.ru/
Дата: 15.01.13 16:20
Оценка: 2 (1)
Здравствуйте, script902, Вы писали:

S>не могу понять как добавить новый дополнительный интерфейс к существующему объекту.


Вы хотите добавить описание нового интерфейса в IDL-файл ?
Или Вы желаете, имея описание интерфейса в IDL-файле, заставить визард сгенерировать код для него ?
Или же визард должен реализовать поддержку данного интерфейса классом без его объявления в IDL-файле ?

Если первое, тогда визард не поможет, интерфейс нужно описывать вручную.
И напомню, что в COM множественное наследование запрещено, то есть термин "добавить интерфейс" в
данном случае вообще неприменим.

Если второе, тогда нет ничего проще — выбирайте Add Class Wizard, ATL Simple Object или что там
лучше подходит, задавайте параметры и жмите "Finish". Всю работу возьмет на себя мастер ATL,
потребуется лишь наполнить методы-пустышки смыслом (то есть кодом).

Также просто добавлять в сгенерированные ATL-классы методы и свойства, для этого есть специальный
визард, только методы и свойства следует добавлять в интерфейс, а не в класс.

Если третье, тогда вновь придется обойтись без визарда. Для того, чтобы добавить поддержку
интерфейса классом, необходимо добавить его в список наследования и реализовать все его базовые методы.
И поместить макрос COM_INTERFACE_ENTRY в соответствующее место в объявлении класса.

А вообще, я не советую начинать изучение COM с ATL — это развращает и в некотором смысле
затуманивает истину. Лучше сначала хардкор — реализация COM-серверов вручную, осмысление
IDispatch, IPersist, понимание apartments, connection points, маршалинга, потоковых моделей и т.п.
И только потом программирование с использованием ATL, которое покажется сказочной прогулкой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.