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.