Sdílet prostřednictvím


Podpora oznámení

Implementace rozhraní bodu připojení na poskytovateli a příjemci

Chcete-li implementovat oznámení, musí třída poskytovatele dědit z IRowsetNotifyCP a IConnectionPointContainer.

IRowsetNotifyCP implementuje místo poskytovatele pro bod připojení rozhraní IRowsetNotify.IRowsetNotifyCP implementuje všesměrové funkce pro navedení posluchačů na bod připojení IID_IRowsetNotify změn na obsah sady řádků.

Všimněte si, že musíte také implementovat a zaregistrovat IRowsetNotify pro příjemce (označováno také jako jímka) pomocí IRowsetNotifyImpl tak, aby příjemce mohl zpracovávat oznámení.Pro informace o implementaci rozhraní bodu připojení pro příjemce si prohlédněte Příjem oznámení.

Kromě toho musí třída obsahovat mapu, která definuje vstup bodu připojení, jako je tato:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

Přidání IRowsetNotify

Chcete-li přidat IRowsetNotify, je nutné přidat IConnectionPointContainerImpl<rowset-name> a IRowsetNotifyCP<rowset-name> do vašeho řetězce dědičnosti.

Zde je například řetězec dědičnosti pro RUpdateRowset v UpdatePV:

[!POZNÁMKA]

Ukázkový kód se může lišit od zde uvedeného; měli byste považovat ukázkový kód jako aktuálnější verzi.

///////////////////////////////////////////////////////////////////////////
// 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>

Nastavení položek mapy modelu COM

Je také třeba přidat následující do mapy modelu COM ve vaší sadě řádků:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Tato makra umožní komukoli volání QueryInterface pro váš kontejner bodů připojení (základ IRowsetNotify) pro nalezení požadovaného rozhraní vašeho poskytovatele.Pro příklad použití bodů připojení si prohlédněte ukázku a kurz ATL POLYGON.

Nastavení položek mapy bodů připojení

Potřebujete rovněž přidat mapu bodů připojení.Mělo by to vypadat podobně jako:

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

Tato mapa bodů připojení umožňuje komponentě, hledající rozhraní IRowsetNotify, jeho nalezení ve vašem poskytovateli.

Nastavování vlastností

Musíte také přidat následující vlastnosti do vašeho poskytovatele.Potřebujete pouze přidat vlastnosti, založené na rozhraních, které podporujete.

Property

Přidejte, pokud podporujete

DBPROP_IConnectionPointContainer

Vždy

DBPROP_NOTIFICATIONGRANULARITY

Vždy

DBPROP_NOTIFICATIONPHASES

Vždy

DBPROP_NOTIFYCOLUMNSET

IRowsetChange

DBPROP_NOTIFYROWDELETE

IRowsetChange

DBPROP_NOTIFYROWINSERT

IRowsetChange

DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE

Vždy

DBPROP_NOTIFYROWFIRSTCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWSETRELEASE

Vždy

DBPROP_NOTIFYROWUNDOCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWUNDODELETE

IRowsetUpdate

DBPROP_NOTIFYROWUNDOINSERT

IRowsetUpdate

DBPROP_NOTIFYROWUPDATE

IRowsetUpdate

Většina implementace pro oznámení je již vložena v šablonách zprostředkovatele OLE DB.Díky funkci kompilátoru ve Visual C++ .NET, pokud nepřidáte IRowsetNotifyCP do vašeho řetězce dědičnosti, kompilátor odebere veškerý tento kód z vašeho proudu kompilace, pro zmenšení velikosti kódu.

Viz také

Koncepty

Pokročilé techniky zprostředkování