Sdílet prostřednictvím


Podpora oznámení

Implementace rozhraní spojovacího bodu u zprostředkovatele a příjemce

K implementaci oznámení musí třída zprostředkovatele dědit z IRowsetNotifyCP a IConnectionPointContainer.

IRowsetNotifyCP implementuje lokalitu zprostředkovatele pro rozhraní spojovacího bodu IRowsetNotify. IRowsetNotifyCP implementuje funkce všesměrového vysílání, které radí naslouchacím procesům v spojovacím bodu IID_IRowsetNotify změn v obsahu sady řádků.

Musíte také implementovat a zaregistrovat IRowsetNotify příjemce (označovaný také jako jímka) pomocí IRowsetNotifyImpl , aby příjemce mohl zpracovávat oznámení. Informace o implementaci rozhraní spojovacího bodu pro příjemce naleznete v tématu Příjem oznámení.

Třída také musí mít mapu, která definuje položku spojovacího bodu, například takto:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

Přidání IRowsetNotify

Chcete-li přidat IRowsetNotify, musíte přidat IConnectionPointContainerImpl<rowset-name> a IRowsetNotifyCP<rowset-name> do řetězu dědičnosti.

Tady je například řetězec dědičnosti pro RUpdateRowset updatePV:

Poznámka:

Vzorový kód se může lišit od toho, co je zde uvedeno; vzorový kód byste měli považovat za aktuální 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 mapování modelu COM

V sadě řádků musíte také přidat následující položky na mapu MODELU COM:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Tato makra umožňují každému volajícímu QueryInterface pro váš kontejner spojovacího bodu (základ) IRowsetNotifynajít požadované rozhraní vašeho poskytovatele. Příklad použití spojovacích bodů najdete v ukázce a kurzu ATL POLYGON.

Nastavení položek mapování spojovacích bodů

Musíte také přidat mapu spojovacího bodu. Výsledek by měl vypadat přibližně takto:

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

Tato mapa spojovacího bodu umožňuje komponentě, která hledá rozhraní, aby ho IRowsetNotify našli ve vašem poskytovateli.

Nastavení vlastností

Ke svému poskytovateli musíte také přidat následující vlastnosti. Stačí přidat vlastnosti jenom na základě rozhraní, která podporujete.

Vlastnost Přidání, pokud podporujete
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

Většina implementace oznámení je již vložena do šablon zprostředkovatele OLE DB. Pokud do řetězu dědičnosti nepřidáte IRowsetNotifyCP , kompilátor odebere veškerý tento kód z kompilačního streamu, čímž zmenší velikost kódu.

Viz také

Pokročilé techniky zprostředkování