CConnectionPoint-Klasse
Definiert einen besonderen Typ Schnittstelle verwendet, um mit anderen OLE-Objekten zu kommunizieren, aufgerufen einen Verbindungspunkt "."
class CConnectionPoint : public CCmdTarget
Mitglieder
Öffentliche Konstruktoren
Name |
Description |
---|---|
Erstellt ein CConnectionPoint-Objekt. |
Öffentliche Methoden
Name |
Description |
---|---|
Ruft alle Verbindungspunkte in einer Verbindungszuordnung ab. |
|
Ruft den Container des Steuerelements ab, das die Verbindungszuordnung besitzt. |
|
Ruft die Schnittstellen-ID eines Verbindungspunktes ab. |
|
Ruft die maximale Anzahl von Verbindungspunkten ab, die von einem Steuerelement unterstützt werden. |
|
Ruft einen Zeiger auf das Verbindungselement bei pos ab. |
|
Startet eine Zuordnungsiteration durch das Zurückgeben eines Werts POSITION, der einem GetNextConnection Aufruf übergeben werden kann. |
|
Aufgerufen vom Framework, wenn Verbindungen eingerichtet werden oder unterbrochen werden. |
|
Ruft einen Zeiger auf die angeforderte Senkenschnittstelle ab. |
Hinweise
Anders als normale OLE-Schnittstellen die verwendet werden, um die Funktionalität eines OLE-Steuerelements, implementiert eines Verbindungspunktes zu implementieren und verfügbar gemacht, die eine Ausgangsschnittstelle ist, Aktionen für andere Objekte, z Auslösenereignissen und Änderungsbenachrichtigungen zu initiieren.
Eine Verbindung besteht aus zwei Teilen: das Objekt, das die Schnittstelle aufgerufen, die Quelle "," und das Objekt implementiert die Schnittstelle aufruft, die die Senke" auf ". Wenn Sie einen Verbindungspunkt verfügbar macht, ermöglicht eine Quelle Senken, um Verbindungen auf festzulegen. Durch den Verbindungspunktmechanismus erhält ein Quellobjekt ein Zeiger auf die Implementierung der Senke eines Satzes Memberfunktionen. Um beispielsweise ein Ereignis auszulösen, das von der Senke implementiert ist, kann die Quelle die entsprechende Methode der Implementierung der Senke aufrufen.
Standardmäßig COleControl von abgeleitete Klasse implementiert zwei Verbindungspunkte: ein für Ereignisse und eines für Benachrichtigungen für Eigenschaftenänderungen. Diese Verbindungen werden, bzw., für Auslösen von Ereignissen und zum Benachrichtigen einer Senke verwendet (beispielsweise, der Container des Steuerelements) wenn ein Eigenschaftswert geändert wurde. Unterstützung wird auch bietet, damit OLE-Steuerelemente zusätzliche Verbindungspunkten implementieren. Für jeden zusätzlichen Verbindungspunkt, der in der Steuerelementklasse implementiert wird, müssen Sie einen "inneres Element" deklarieren diesen implementiert der Verbindungspunkt. Wenn Sie eine oder mehrere Verbindungspunkte implementieren, müssen Sie auch eine einzelne "Verbindungszuordnung" in der Steuerelementklasse deklarieren.
Das folgende Beispiel zeigt eine einfache Verbindungszuordnung und einen Verbindungspunkt für das Sample OLE-Steuerelement und besteht aus zwei Fragmenten des Codes: der erste Teil deklariert die Verbindungszuordnung und den Punkt; das zweite implementiert diese Zuordnung und Punkt. Das erste Fragment wird in die Deklaration der Steuerelementklasse, unter dem protected-Abschnitt eingefügt:
// Connection point for ISample interface
BEGIN_CONNECTION_PART(CMyClass, SampleConnPt)
CONNECTION_IID(IID_ISampleSink)
END_CONNECTION_PART(SampleConnPt)
DECLARE_CONNECTION_MAP()
Die BEGIN_CONNECTION_PART und END_CONNECTION_PART-Makros deklarieren eine eingebettete Klasse, XSampleConnPt (abgeleitet von) CConnectionPoint dieses implementiert der bestimmte Verbindungspunkt. Wenn Sie eine CConnectionPoint-Memberfunktionen überschreiben möchten oder Memberfunktionen von eigenen hinzufügen, deklarieren Sie sie zwischen diesen beiden Makros. Beispielsweise überschreibt das CONNECTION_IID-Makro die CConnectionPoint::GetIID-Memberfunktion, wenn zwischen diese beiden Makros platziert wird.
Das zweite Codefragment wird in die Implementierungsdatei (.CPP) der Steuerelementklasse eingefügt. Dieser Code implementiert die Verbindungszuordnung, die zusätzlichen Verbindungspunkt einschließt, SampleConnPt:
BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()
Nachdem diese Codefragmente eingefügt wurden, macht das Beispielole-steuerelement einen Verbindungspunkt für die ISampleSink-Schnittstelle verfügbar.
In der Regel unterstützen Verbindungspunkte "Multi - Letzteres" Element, das die Fähigkeit ist, zu mehreren Senken zu übertragen, die an die gleiche Schnittstelle verbunden werden. Das folgende Codefragment zeigt, wie Multi - Letzteres Element erreicht, indem es durch jede Senke auf einem Verbindungspunkt durchläuft:
void CMyClass::CallSinkFunc()
{
POSITION pos = m_xSampleConnPt.GetStartPosition();
ISampleSink* pSampleSink;
while( pos != NULL )
{
pSampleSink = (ISampleSink*)(m_xSampleConnPt.GetNextConnection(pos));
if(pSampleSink != NULL)
pSampleSink->SinkFunc();
}
}
In diesem Beispiel wird die aktuelle ab, der von den Verbindungen auf dem SampleConnPt Verbindungspunkt mit einem Aufruf von CConnectionPoint::GetConnections festgelegt ist. Es wird durch die Verbindungen durch und ruft ISampleSink::SinkFunc auf jeder aktiven Verbindung auf.
Weitere Informationen zur Verwendung von CConnectionPoint, finden Sie im Artikel Verbindungspunkte.
Vererbungshierarchie
CConnectionPoint
Anforderungen
Header: afxdisp.h