共用方式為


支援告知

更新:2007 年 11 月

實作提供者和消費者的連接點介面

若要實作告知,提供者 (Provider) 類別必須繼承自 IRowsetNotifyCPIConnectionPointContainer

IRowsetNotifyCP 實作連接點介面 IRowsetNotify 的提供者網站。IRowsetNotifyCP 則實作廣播功能,以通知在 IID_IRowsetNotify 連接點上的接聽程式關於資料列集內容的變更。

請注意,您也必須使用 IRowsetNotifyImpl 來實作並登錄在消費者上的 IRowsetNotify (亦稱為接收),以便讓消費者可處理告知。如需在消費者上實作連接點介面的詳細資訊,請參閱接收告知

此外,類別也必須包含定義連接點 (Connection Point) 項目的對應,例如:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

加入 IRowsetNotify

若要加入 IRowsetNotify,您需要將 IConnectionPointContainerImpl<rowset-name> 和 IRowsetNotifyCP<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)

這些巨集可讓任何人呼叫連接點容器 (Container) 的 QueryInterface (IRowsetNotify 的基礎),以便在提供者內尋找要求的介面。如需如何使用連結點的範例,請參閱 ATL POLYGON 範例和教學課程。

設定連接點對應項目

您也需要加入連接點對應。程式碼類似以下內容:

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

這個連接點對應會讓搜尋 IRowsetNotify 介面的元件在提供者內尋找連接點對應。

設定屬性

您也需要將下列屬性加入提供者 (Provider) 內。您只需要根據支援的介面加入屬性。

屬性

支援時應加入

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 提供者樣板內。由於 Visual C++ .NET 的編譯器 (Compiler) 特性,如果您未將 IRowsetNotifyCP 加入至繼承鏈結內,編譯器會從編譯資料流中移除所有程式碼,以便縮小程式碼大小。

請參閱

概念

進階的提供者技術