Freigeben über


Unterstützen von Benachrichtigungen

Implementieren von Verbindungspunktschnittstellen für Anbieter und Consumer

Um Benachrichtigungen zu implementieren, muss eine Anbieterklasse von IRowsetNotifyCP und IConnectionPointContainer erben.

IRowsetNotifyCP implementiert die Anbieterwebsite für die Verbindungspunktschnittstelle IRowsetNotify. IRowsetNotifyCP implementiert Übertragungsfunktionen, um Listener über den Verbindungspunkt IID_IRowsetNotify von Änderungen am Inhalt des Rowsets zu beraten.

Sie müssen den Verbraucher (auch als Sink bezeichnet) auch mithilfe von IRowsetNotifyImpl implementieren und registrierenIRowsetNotify, damit der Verbraucher Benachrichtigungen verarbeiten kann. Informationen zum Implementieren der Verbindungspunktschnittstelle für den Consumer finden Sie unter Empfangen von Benachrichtigungen.

Außerdem muss die Klasse über eine Karte verfügen, die den Einstieg des Verbindungspunkts definiert, wie folgt:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

Hinzufügen von IRowsetNotify

Zum Hinzufügen IRowsetNotifymüssen Sie Ihrer Vererbungskette hinzufügen und IRowsetNotifyCP<rowset-name> diese hinzufügenIConnectionPointContainerImpl<rowset-name>.

Hier ist beispielsweise die Vererbungskette für RUpdateRowset UpdatePV:

Hinweis

Der Beispielcode unterscheidet sich möglicherweise vom hier gezeigten Code. Betrachten Sie den Beispielcode als die aktuellere Codeversion.

///////////////////////////////////////////////////////////////////////////
// class RUpdateRowset (in rowset.h)

class RUpdateRowset :
public CRowsetImpl< RUpdateRowset, CAgentMan, CUpdateCommand,
         CAtlArray< CAgentMan, CAtlArray<CAgentMan>>, CSimpleRow,
         IRowsetScrollImpl< RUpdateRowset, IRowsetScroll >>,
      public IRowsetUpdateImpl< RUpdateRowset, CAgentMan >,
      public IConnectionPointContainerImpl<RUpdateRowset>,
      public IRowsetNotifyCP<RUpdateRowset>

Festlegen von COM-Zuordnungseinträgen

Außerdem müssen Sie der COM-Zuordnung in Ihrem Rowset Folgendes hinzufügen:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Diese Makros ermöglichen es jedem, der ihren Verbindungspunktcontainer aufruft QueryInterface (die Basis von IRowsetNotify) die angeforderte Schnittstelle auf Ihrem Anbieter zu finden. Ein Beispiel für die Verwendung von Verbindungspunkten finden Sie im ATL POLYGON-Beispiel und -Lernprogramm.

Festlegen von Verbindungspunktzuordnungseinträgen

Außerdem müssen Sie eine Verbindungspunktzuordnung hinzufügen. Dieser sollte ungefähr wie folgt aussehen:

BEGIN_CONNECTION_POINT_MAP(rowset-name)
     CONNECTION_POINT_ENTRY(_uuidof(IRowsetNotify))
END_CONNECTION_POINT_MAP()

Diese Verbindungspunktzuordnung ermöglicht einer Komponente, die nach der IRowsetNotify Schnittstelle sucht, um sie in Ihrem Anbieter zu finden.

Festlegen von Eigenschaften

Außerdem müssen Sie ihrem Anbieter die folgenden Eigenschaften hinzufügen. Sie müssen nur Eigenschaften basierend auf den von Ihnen unterstützten Schnittstellen hinzufügen.

Eigenschaft Hinzufügen, wenn Sie Unterstützung haben
DBPROP_IConnectionPointContainer Always
DBPROP_NOTIFICATIONGRANULARITY Always
DBPROP_NOTIFICATIONPHASES Always
DBPROP_NOTIFYCOLUMNSET IRowsetChange
DBPROP_NOTIFYROWDELETE IRowsetChange
DBPROP_NOTIFYROWINSERT IRowsetChange
DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE Always
DBPROP_NOTIFYROWFIRSTCHANGE IRowsetUpdate
DBPROP_NOTIFYROWSETRELEASE Always
DBPROP_NOTIFYROWUNDOCHANGE IRowsetUpdate
DBPROP_NOTIFYROWUNDODELETE IRowsetUpdate
DBPROP_NOTIFYROWUNDOINSERT IRowsetUpdate
DBPROP_NOTIFYROWUPDATE IRowsetUpdate

Die meisten Implementierungen für die Benachrichtigungen sind bereits in die OLE DB-Anbietervorlagen eingebettet. Wenn Sie Ihrer Vererbungskette nicht hinzufügen IRowsetNotifyCP , entfernt der Compiler den gesamten Code aus dem Kompilierungsstream, wodurch die Codegröße kleiner wird.

Siehe auch

Erweiterte Anbietertechniken