RMyProviderRowset devralma değiştirme

Eklemek için IRowsetLocate arayüzü basit salt sağlayıcı örneği, devralınmasını değiştirmek RMyProviderRowset . Başlangıçta, RMyProviderRowset CRowsetImpldevralır. CRowsetBaseImpldevralmak için değiştirmeniz gerekir. Bunu yapmak için yeni bir sınıf oluşturmak CMyRowsetImpl , MyProviderRS.h içinde:

////////////////////////////////////////////////////////////////////////
/ / MyProviderRS.h

Şablon lt; sınıf t, sınıf depolama, sınıf CreatorClass, sınıf ArrayType CSimpleArray <Storage> = >
Class CMyRowsetImpl:
   Genel CRowsetBaseImpl < t, depolama, CreatorClass, ArrayType >,
   Genel IRowsetLocateImpl <T>
{
   TypeDef CRowsetBaseImpl < t, depolama, 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()
}

Şimdi, söyleyen bir com arabirimi harita oluşturmak CMyRowsetImpl hem IRowset için QueryInterface çağrısı için ve IRowsetLocate arabirimleri.

////////////////////////////////////////////////////////////////////////
/ / MyProviderRS.h

BEGIN_COM_MAP(CMyRowsetImpl)
   COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate, IRowset)
   COM_INTERFACE_ENTRY(IRowset)
END_COM_MAP()

Bağlantı-e doğru almak tüm diğer satır kümesi sınıfları için uygulanması, CMyRowsetImpl sınıfı için ole db şablon tarafından tanımlanan CRowsetBaseImpl sınıfı. Bunu yapmak için aşağıdaki kodda gösterildiği gibi COM_INTERFACE_ENTRY_CHAIN makro'ı kullanın. ole db QueryInterface çağrısı karşısında CRowsetBaseImpl com harita taramak için şablonlar COM_INTERFACE_ENTRY_CHAIN makro söyler.

////////////////////////////////////////////////////////////////////////
/ / MyProviderRS.h

BEGIN_COM_MAP(CMyRowsetImpl)
   COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate, IRowset)
   COM_INTERFACE_ENTRY(IRowset)
   COM_INTERFACE_ENTRY_CHAIN(_RowsetBaseClass)
END_COM_MAP()

Son olarak, bağlantı RAgentRowset için CMyRowsetBaseImpl değiştirerek RAgentRowset dan devralmak için CMyRowsetImpl , burada gösterildiği gibi:

rAgentRowset sınıfı: Genel CMyRowsetImpllt;RAgentRowset, CAgentMan, CMyProviderCommand & gt

RAgentRowsetşimdi-ebilmek kullanma IRowsetLocate uygulanması için satır kümesi sınıfın geri kalanını garantisinden arabirimi.

Bu yapıldığında, IRowsetLocateImpl uygulamak için hazırsınız.

Index