RMyProviderRowset の継承の変更

追加するには、 IRowsetLocate インターフェイスは、単純な読み取り専用プロバイダーの例の継承を変更 RMyProviderRowset 。最初に、 RMyProviderRowset CRowsetImplから継承されます。それからCRowsetBaseImplを継承するように変更する必要があります。これを行うには、新しいクラスを作成 CMyRowsetImpl 、MyProviderRS.h に:

//////////////////////////////////////////////////////////////////////////MyProviderRS.hテンプレート lt; クラス T、クラス ・ ストレージ、CreatorClass、クラス ArrayType CSimpleArray <Storage> = >CMyRowsetImpl をクラスします。パブリック CRowsetBaseImpl < T、ストレージ、CreatorClass、ArrayType >パブリック IRowsetLocateImpl <T>{typedef CRowsetBaseImpl < T、ストレージ、CreatorClass、ArrayType > _RowsetBaseClass;BEGIN_COM_MAP(CMyRowsetImpl)COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate、IRowset)COM_INTERFACE_ENTRY(IRowset)COM_INTERFACE_ENTRY_CHAIN(_RowsetBaseClass)END_COM_MAP()}

今、指示、COM インターフェイス マップを作成する CMyRowsetImpl 両方、 IRowsetのQueryInterfaceを呼び出すと IRowsetLocate インターフェイス。

//////////////////////////////////////////////////////////////////////////MyProviderRS.hBEGIN_COM_MAP(CMyRowsetImpl)COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate、IRowset)COM_INTERFACE_ENTRY(IRowset)END_COM_MAP()

すべての他の行セット クラスの実装を取得するには、リンク、 CMyRowsetImpl クラスは、OLE DB テンプレートで定義されているCRowsetBaseImplクラスに戻るにします。これを行うには、次のコードに示すように、 COM_INTERFACE_ENTRY_CHAINマクロを使用します。OLE DB でCRowsetBaseImpl COM マップQueryInterface呼び出しへの応答でのスキャンをテンプレートCOM_INTERFACE_ENTRY_CHAINマクロを指示します。

//////////////////////////////////////////////////////////////////////////MyProviderRS.hBEGIN_COM_MAP(CMyRowsetImpl)COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate、IRowset)COM_INTERFACE_ENTRY(IRowset)COM_INTERFACE_ENTRY_CHAIN(_RowsetBaseClass)END_COM_MAP()

最後に、リンク RAgentRowset に CMyRowsetBaseImpl の変更によって RAgentRowset から継承する CMyRowsetImpl 、ここで示すように:

rAgentRowset クラス: 公共の CMyRowsetImpllt;RAgentRowset、CAgentMan、CMyProviderCommand & gt

RAgentRowset今すぐ使用することができます、 IRowsetLocate 、行セット クラスの実装の残りの部分を利用しながらインターフェイス。

これが完了したら、 IRowsetLocateImpl を実装する準備ができて。

Index