支援告知
在提供者和取用者上實作連接點介面
若要實作通知,提供者類別必須繼承自 IRowsetNotifyCP 和 IConnectionPointContainer。
IRowsetNotifyCP
會實作連接點介面 IRowsetNotify 的提供者月臺。 IRowsetNotifyCP
會實作廣播函式,以在數據列集內容的變更連接點 IID_IRowsetNotify
上建議接聽程式。
您也必須使用 IRowsetNotifyImpl 在取用者上實作和註冊IRowsetNotify
,讓取用者可以處理通知。 如需在取用者上實作連接點介面的相關信息,請參閱 接收通知。
此外,類別必須有定義連接點進入的對應,如下所示:
BEGIN_CONNECTION_POINT_MAP
CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP
新增 IRowsetNotify
若要新增 IRowsetNotify
,您必須將 和 IRowsetNotifyCP<rowset-name>
新增IConnectionPointContainerImpl<rowset-name>
至繼承鏈結。
例如,以下是 UpdatePV 中的繼承鏈結RUpdateRowset
:
注意
範例程式碼可能會與此處所列的不同;您應該將範例程式碼視為更新版本。
///////////////////////////////////////////////////////////////////////////
// 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>
設定 COM 對應專案
您也需要將下列內容新增至資料列集中的 COM 對應:
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
這些巨集可讓任何人呼叫 QueryInterface
您的連接點容器 (基礎 IRowsetNotify
) 來尋找提供者上要求的介面。 如需如何使用連接點的範例,請參閱 ATL POLYGON 範例和教學課程。
設定連接點對應專案
您也需要新增連接點對應。 您應該會看到類似下面的畫面:
BEGIN_CONNECTION_POINT_MAP(rowset-name)
CONNECTION_POINT_ENTRY(_uuidof(IRowsetNotify))
END_CONNECTION_POINT_MAP()
此連接點對應可讓尋找介面的 IRowsetNotify
元件在您的提供者中尋找它。
設定屬性
您也需要將下列屬性新增至提供者。 您只需要根據您支援的介面來新增屬性。
屬性 | 如果您支援,請新增 |
---|---|
DBPROP_IConnectionPointContainer | 永遠 |
DBPROP_NOTIFICATIONGRANULARITY | 永遠 |
DBPROP_NOTIFICATIONPHASES | 永遠 |
DBPROP_NOTIFYCOLUMNSET | IRowsetChange |
DBPROP_NOTIFYROWDELETE | IRowsetChange |
DBPROP_NOTIFYROWINSERT | IRowsetChange |
DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE | 永遠 |
DBPROP_NOTIFYROWFIRSTCHANGE | IRowsetUpdate |
DBPROP_NOTIFYROWSETRELEASE | 永遠 |
DBPROP_NOTIFYROWUNDOCHANGE | IRowsetUpdate |
DBPROP_NOTIFYROWUNDODELETE | IRowsetUpdate |
DBPROP_NOTIFYROWUNDOINSERT | IRowsetUpdate |
DBPROP_NOTIFYROWUPDATE | IRowsetUpdate |
通知的大部分實作都已內嵌在 OLE DB 提供者範本中。 如果您未新增 IRowsetNotifyCP
至繼承鏈結,編譯程式會從編譯數據流中移除所有該程序代碼,因此您的程式代碼大小較小。