Добавление технологии Connection point в приложение на базе
От: John  
Дата: 16.07.01 22:52
Оценка: 207 (10) -1
Статья :
Добавление технологии Connection point в приложение на базе библиотеки MFC
Автор(ы): Евгений Щербатов
Дата: 18.04.2001

Статья посвящена технологии Connection Points в программах на MFC. Автор кратко описывает сущность и назначение этой технологии, а затем демонстрирует создание COM-клиента и COM-сервера на базе MFC с её использованием.


Авторы :
John

Аннотация :
Статья посвящена технологии Connection Points в программах на MFC. Автор кратко описывает сущность и назначение этой технологии, а затем демонстрирует создание COM-клиента и COM-сервера на базе MFC с её использованием.
Странный эффект при подписке на события
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 16.05.02 19:19
Оценка:
Ситуация — два клиента CLSRV1 и CLSRV2 (MFC+ATL, в свою очередь тоже COM-сервера) подписаны на события одного и того-же экземпляра ATL COM сервера SRV. Соответственно сначала CLSRV1 загружает CLSRV2 и SRV, потом подписывается на события от SRV, после чего передает указатель на интерфейс SRV в CLSRV2 и тот в свою очередь тоже подписывется на события от SRV. При этом в CLSRV1 и CLSRV2 реализован разный, частично пересекающийся, набор обработчиков для событий от SRV.

Теперь странности — если обработчик к-л события уже есть в CLSRV1 то он обязательно должен быть и в CLSRV2, иначе при возбуждении события и вызове в SRV pDispatch->Invoke имеем

Ошибка 0x80020003 при возбуждении события: Член группы не найден.

Обработчик в CLSRV1 при этом срабатывает нормально.

Если же ситуация обратная — обработчик есть только в CLSRV2 то в CLSRV1 он вроде как и не нужен, все проходит на ура, без всяких ошибок.

Есть какая-то сермяжная правда в таком поведении?
как обработать события от двух COM-серверов...
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 04.04.02 23:23
Оценка:
... у которых методы с разными названиями, но с одинаковыми ID? Событие хватает первый встреченный со своим ID в карте BEGIN_DISPATCH_MAP / END_DISPATCH_MAP, невзирая на название.
Все работает, вот только...
От: Egor_M  
Дата: 15.03.02 02:39
Оценка:
У меня вопрос, если я сделаю 2 IMyInterfacePtr, скажем

MyInterfacePtr m_MyInterface1 ,m_MyInterface;
как я смогу разрулить так, чтобы их события обрабатывали разные функции?
Connection
От: Аноним  
Дата: 18.10.01 00:04
Оценка:
Потерял бы еще неделю на расборку MSDN — преочень благодарен!!!
На счет ConnectionPoint
От: Аноним  
Дата: 16.10.01 02:55
Оценка:
Большое, нет огромнейшее спасибо Вам!
Добавление технологии Connection point
От: Аноним  
Дата: 17.07.01 22:52
Оценка:
Всё работает!
Спасибо.
Re: как обработать события от двух COM-серверов...
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 12.05.02 19:12
Оценка: 2 (1)
http://www.rsdn.ru/forum/message.asp?mid=42954
Автор: Dima2
Дата: 07.04.02
Re: Все работает, вот только...
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 09.04.02 21:19
Оценка:
Если интерфейс твой, то проще добавить в каждый метод идентификатор экземпляра и плясать от него, если не охота или инетерфейсы чужие, то работает вот это — http://www.rsdn.ru/forum/message.asp?mid=42954&only
Автор: Dima2
Дата: 07.04.02
Re: Добавление технологии Connection point в приложение на б
От: vgrigor  
Дата: 17.06.03 13:10
Оценка: +1
Разве программирование СOM в MFC, не является очень плохим
тоном — ввиду кривизны и натятнутости, — ограниченности, и далее проблемы по нарастающей,
MFC для COM не предназначена. Нет никакой нормальной инфраструткуры, кроме нескольких макро.

Рекомендовать это к применению кроме как клиентским способом — обрекать людей на проблемы.

Надо бы об этом написать, если вы согласны.
(Если честно, конечно.)
Винтовку добудешь в бою!
Re[2]: Добавление технологии Connection point в приложение н
От: Vitaton Россия  
Дата: 17.06.03 14:05
Оценка: -1
Здравствуйте, vgrigor, Вы писали:

V>Разве программирование СOM в MFC, не является очень плохим

V>тоном — ввиду кривизны и натятнутости, — ограниченности, и далее проблемы по нарастающей,
V>MFC для COM не предназначена. Нет никакой нормальной инфраструткуры, кроме нескольких макро.

V>Рекомендовать это к применению кроме как клиентским способом — обрекать людей на проблемы.


V>Надо бы об этом написать, если вы согласны.

V>(Если честно, конечно.)

Тссс...Не шуми...
Useless lamer
Re: Нельзя ли разъяснить один момент?
От: Constructor  
Дата: 26.08.03 08:50
Оценка:
Здравствуйте, John, Вы писали:

Теперь необходимо в функции InitInstance класса CPointClientApp добавить инициализацию СОМ. В нашем случае вполне сойдет инициализация для STA, поэтому воспользуемся функцией CoInitialize(NULL):


Не могли бы Вы чуть подробнее написать, зачем нужен вызов CoInitialize? Дело в том, что я сделал пример, почти как Ваш, и уменя все работает и без вызова CoInitialize.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.