Здравствуйте, 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, которое покажется сказочной прогулкой.