Modificar la herencia de RMyProviderRowset

Para agregar el IRowsetLocate de la interfaz para el ejemplo de proveedor sencillo de sólo lectura, modificar la herencia de RMyProviderRowset . Inicialmente, RMyProviderRowset hereda de CRowsetImpl. Necesita modificarla para heredar de CRowsetBaseImpl. Para ello, cree una nueva clase, CMyRowsetImpl , en MyProviderRS.h:

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

plantilla lt; clase T, clase de almacenamiento, clase CreatorClass, clase ArrayType = CSimpleArray <Storage> >
clase CMyRowsetImpl:
   público CRowsetBaseImpl < T, almacenamiento de información, CreatorClass, ArrayType >
   IRowsetLocateImpl pública <T>
{
   TypeDef CRowsetBaseImpl < T, almacenamiento de información, 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()
}

Ahora, cree un mapa de interfaz COM que dice CMyRowsetImpl a llamar a QueryInterface para la IRowset y IRowsetLocate interfaces.

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

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

Para obtener todos los de la aplicación de las otras clases de conjunto de filas, vincular la CMyRowsetImpl clase a la clase de CRowsetBaseImpl definida por las plantillas OLE DB. Para ello, utilice una macro COM_INTERFACE_ENTRY_CHAIN , como se muestra en el siguiente código. La macro COM_INTERFACE_ENTRY_CHAIN dice plantillas OLE DB para analizar el mapa COM en CRowsetBaseImpl en respuesta a una llamada a QueryInterface.

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

Por último, vincular RAgentRowset a CMyRowsetBaseImpl modificando RAgentRowset a heredar de CMyRowsetImpl , como se muestra aquí:

clase RAgentRowset: CMyRowsetImpllt pública;RAgentRowset, CAgentMan, CMyProviderCommand & gt

RAgentRowsetAhora puede utilizar el IRowsetLocate interfaz mientras aprovecha el resto de la aplicación para la clase de conjunto de filas.

Cuando esto sucede, está listo para implementar IRowsetLocateImpl.

Index