Verwenden von IConnectionPoint
Wenn der Client über einen Zeiger auf einen Verbindungspunkt verfügt, kann er die folgenden Vorgänge ausführen, die über IConnectionPoint ausgedrückt werden:
- Zunächst ruft IConnectionPoint::GetConnectionInterface die vom Verbindungspunkt unterstützte ausgehende Schnittstelle IID ab. Bei Verwendung in Verbindung mit IEnumConnectionPoints ermöglicht diese Methode dem Client, die IIDs aller ausgehenden Schnittstellen zu untersuchen, die für das verbindende Objekt unterstützt werden.
- Zweitens kann ein Client über die IConnectionPoint::GetConnectionPointContainer-Methode vom Verbindungspunkt zurück zur IConnectionPointContainer-Schnittstelle des verbindenden Objekts navigieren.
- Drittens sind die interessantesten Methoden für den Client IConnectionPoint::Advise und IConnectionPoint::Unadvise. Wenn ein Client sein eigenes Senkenobjekt mit dem zu verbindenden Objekt verbinden möchte, übergibt der Client den IUnknown-Zeiger der Senke (oder einen anderen Schnittstellenzeiger auf dasselbe Objekt) an Advise. Der Verbindungspunkt fragt die Senke nach der spezifischen ausgehenden Schnittstelle ab, die erwartet wird. Wenn diese Schnittstelle auf der Senke verfügbar ist, speichert der Verbindungspunkt den Schnittstellenzeiger. Von diesem Punkt bis zum Aufruf von Unadvise führt das zu verbindende Objekt Aufrufe an die Senke über diese Schnittstelle aus, wenn Ereignisse auftreten. Um die Senke vom Verbindungspunkt zu trennen, übergibt der Client einen von Advise zurückgegebenen Schlüssel an die Unadvise-Methode . Unadvise muss Release auf der Senkenschnittstelle aufrufen.
- Schließlich kann ein Client einen Verbindungspunkt bitten, alle Verbindungen aufzulisten, die über IConnectionPoint::EnumConnections vorhanden sind. Diese Methode erstellt ein Enumeratorobjekt (mit einer separaten Verweisanzahl), das einen IEnumConnections-Zeiger darauf zurückgibt. Der Client muss Release aufrufen, wenn der Enumerator nicht mehr benötigt wird. Darüber hinaus gibt der Enumerator eine Reihe von CONNECTDATA-Strukturen zurück, eine für jede Verbindung. Jede Struktur beschreibt eine Verbindung mithilfe des IUnknown-Zeigers der Senke sowie des Verbindungsschlüssels, der ursprünglich von Advise zurückgegeben wurde. Wenn sie mit diesen Senkenschnittstellenzeigern ausgeführt werden, muss der Client Release für jeden zeiger aufrufen, der in einer CONNECTDATA-Struktur zurückgegeben wird.
Zugehörige Themen