共用方式為


修改 RCustomRowset 的繼承

若要將 IRowsetLocate 介面新增至簡單的唯讀提供者範例,請修改的 CCustomRowset繼承。 開始, CCustomRowset 繼承自 CRowsetImpl。 您必須修改它以繼承自 CRowsetBaseImpl

若要這樣做,請在 CustomRS.h 中建立新的類別 CCustomRowsetImpl

////////////////////////////////////////////////////////////////////////
// CustomRS.h

template <class T, class Storage, class CreatorClass, class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
   public CRowsetImpl<T, Storage, CreatorClass, ArrayType, CSimpleRow, IRowsetLocateImpl< T, IRowsetLocate >>
{
...
};

現在,在自定義RS.h 中編輯 COM 介面對應,如下所示:

BEGIN_COM_MAP(CMyRowsetImpl)
   COM_INTERFACE_ENTRY(IRowsetLocate)
   COM_INTERFACE_ENTRY_CHAIN(_RowsetBaseClass)
END_COM_MAP()

此程式代碼會建立 COM 介面對應,告知 CMyRowsetImpl 呼叫 QueryInterface IRowsetIRowsetLocate 介面。 若要取得其他數據列集類別的所有實作,對應會將類別連結 CMyRowsetImplCRowsetBaseImpl OLE DB 範本所定義的類別;對應會使用 COM_INTERFACE_ENTRY_CHAIN 巨集,告知 OLE DB 範本掃描 COM 對應以 CRowsetBaseImpl 回應 QueryInterface 呼叫。

最後,藉由修改 CCustomRowset 以繼承自 CMyRowsetImpl來連結 CCustomRowsetCMyRowsetBaseImpl如下所示:

class CCustomRowset : public CMyRowsetImpl<CCustomRowset, CCustomWindowsFile, CCustomCommand>

CCustomRowset 現在 IRowsetLocate 可以使用 介面,同時利用數據列集類別的其餘實作。

完成此動作之後,您可以 動態判斷傳回給取用者的數據行。

另請參閱

增強簡單唯讀提供者