Korzystanie z programu IConnectionPoint
Gdy klient ma wskaźnik do punktu połączenia, może wykonać następujące operacje wyrażone za pomocą IConnectionPoint:
- Najpierw IConnectionPoint::GetConnectionInterface pobiera identyfikator IID dla interfejsu wychodzącego obsługiwany przez punkt połączenia. W połączeniu z IEnumConnectionPoints, ta metoda umożliwia klientowi sprawdzenie identyfikatorów IID wszystkich interfejsów wychodzących obsługiwanych w obiekcie połączonym.
- Po drugie, klient może przechodzić od punktu połączenia z powrotem do interfejsu IConnectionPointContainer poprzez metodę IConnectionPoint::GetConnectionPointContainer.
- Po trzecie, najbardziej interesujące metody dla klienta to IConnectionPoint::Advise i IConnectionPoint::Unadvise. Gdy klient chce połączyć własny obiekt ujścia z obiektem połączonym, klient przekazuje IUnknown wskaźnik ujścia (lub inny wskaźnik interfejsu na tym samym obiekcie) w celu Doradca. Punkt połączenia pyta odbiornik o określony interfejs wychodzący, który jest oczekiwany. Jeśli ten interfejs jest dostępny w ujściu, punkt połączenia przechowuje wskaźnik interfejsu. Od tego momentu, aż do momentu wywołania Unadvise, obiekt łączący się będzie wykonywać wywołania do odbiornika za pośrednictwem tego interfejsu w przypadku zdarzeń. Aby odłączyć ujście od punktu połączenia, klient przekazuje klucz zwrócony z Advise do metody Unadvise. unadvise musi wywołać Release w interfejsie ujścia.
- Na koniec klient może poprosić punkt połączenia o wyliczenie wszystkich połączeń z nim, które istnieją za pośrednictwem IConnectionPoint::EnumConnections. Ta metoda tworzy obiekt wyliczający (z oddzielnym licznikiem odwołań), zwracający wskaźnik IEnumConnections do niego. Klient musi wywołać Release, gdy enumerator nie jest już potrzebny. Ponadto moduł wyliczający zwraca szereg struktur CONNECTDATA jeden dla każdego połączenia. Każda struktura opisuje jedno połączenie przy użyciu wskaźnika IUnknown odbiornika oraz klucza połączenia pierwotnie zwróconego z Advise. Po zakończeniu korzystania z tych wskaźników interfejsu ujścia, klient musi wywołać Release na każdym wskaźniku zwróconym w strukturze CONNECTDATA.
Tematy pokrewne
-
interfejsy obiektów connectable