支持通知

在提供程序和使用者上实现连接点接口

若要实现通知,提供程序类必须继承自 IRowsetNotifyCPIConnectionPointContainer

IRowsetNotifyCP 实现连接点接口 IRowsetNotify 的提供程序站点。 IRowsetNotifyCP 实现广播函数,就行集内容的更改连接点 IID_IRowsetNotify 向侦听器提供建议。

还必须使用 IRowsetNotifyImpl 在使用者(也称为接收器)上实现和注册 IRowsetNotify,以便使用者可以处理通知。 有关在使用者上实现连接点接口的信息,请参阅接收通知

此外,类必须具有定义连接点入口的映射,如下所示:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

添加 IRowsetNotify

若要添加 IRowsetNotify,需要添加 IConnectionPointContainerImpl<rowset-name>IRowsetNotifyCP<rowset-name> 到继承链。

例如,下面是 UpdatePVRUpdateRowset 的继承链:

注意

示例代码可能与本文列出的代码不同;应将示例代码视为最新版本。

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

这些宏允许为连接点容器(IRowsetNotify 的基础)调用 QueryInterface 的任何人在提供程序上查找请求的接口。 有关如何使用连接点的示例,请参阅 ATL POLYGON 示例和教程。

设置连接点映射条目

还需要添加连接点映射。 该值应类似于:

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

此连接点映射允许查找 IRowsetNotify 接口的组件在提供程序中查找它。

设置属性

还需要将以下属性添加到提供程序。 只需根据支持的接口添加属性。

properties 如果支持,请添加
DBPROP_IConnectionPointContainer Always
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 到继承链,编译器将从编译流中删除所有代码,从而使代码更小。

另请参阅

高级提供程序技术