2010-08-25 8 views
3

Попытка понять Что такое IConnectionPoint и как это связано с IConnectionPointContainer,IEnumConnectionPoints,IEnumConnections и EventHandling.Что такое IconnectionPoint и EventHandling

Прочитано артикулы от MSDN и CodeProject, которые объясняют другие методы, такие как: QueryInterface() и другие.

Я не могу понять, как все эти вещи (IConnectionPointContainer,IEnumConnectionPoints,IEnumConnections) взаимосвязаны друг с другом и обработкой событий.

Я просто хочу создать simpleClient, который вызовет событие в COM-объекте.

Если есть какие-либо статьи или фрагменты кода, которые могут объяснить, как вещи связаны друг с другом с помощью простого и небольшого фрагмента кода, будет полезно.

Стоит отметить, что я начал разработку в C недавно, новичок.

Редактировать @sharptooth

Для линии "typically your client will receive events and the COM object will trigger those events."

Из многих статей, что я понял, когда мы используем точки соединения в этой точке, the client exposes a set of methods that the server uses.

Я просто Излагая часть статьи из TechRepublich:

сервер клиентского против источника раковине

Таким образом, основное различие между обычным программированием с COM в стандартной системе клиент-сервер и с помощью точек подключения заключается в том, что в стандартном случае клиент-сервер сервер предоставляет список методов, используемых клиентом, а в случае точки подключения клиент предоставляет набор методов, используемых сервером.

ответ

7

Похоже, вы ошиблись. Обычно ваш клиент будет получать события, и COM-объект будет запускать эти события. Для этого клиент просит (QueryInterface()) интерфейс IConnectionPointContainer, вызывает IConnectionPointContainer::FindConnectionPoint() и IConnectionPoint::Advise() и передает указатель на себя или на некоторый подобъект.

Клиент должен будет реализовать интерфейс событий (один GUID которого передан в IConnectionPointContainer::FindConnectionPoint()). После подписания (сообщил) клиент получит вызовы с COM-сервера - события.

Обычно сервер COM делает что-то регулярно и решает уведомить его клиентов (скажем, пользователь перемещает мышь в элементе управления ActiveX) - он просто получает массив указателей на приемники событий и вызывает метод, который он хочет на этом интерфейсе ,

COM-события на самом деле являются реализацией callbacks. Точно так же, как вы используете обратный вызов в C++ (или C или любые другие языки, поддерживающие указатели на функции или интерфейсы), вы используете события в COM. Да, вы правы, что когда сервер запускает событие, клиент фактически действует как сервер, реагирующий на событие.Это сценарий обратного вызова - другой код называет вашу функциональность. В этом случае сервер вызывает вашу реализацию интерфейса событий.

+0

Отредактировав вопрос по моему запросу – Simsons

Смежные вопросы