เมื่อต้องการเพิ่ม IRowsetLocate อินเทอร์เฟซกับตัวอย่างผู้ให้บริการการอ่านอย่างเดียวอย่างง่าย การปรับเปลี่ยนสิ่งที่สืบทอดของ RMyProviderRowset ตอนแรก RMyProviderRowset สืบทอดจากCRowsetImpl คุณจำเป็นต้องปรับเปลี่ยนให้สืบทอดจากCRowsetBaseImpl เมื่อต้องการทำเช่นนี้ สร้างคลาสใหม่ CMyRowsetImpl ใน MyProviderRS.h:
////////////////////////////////////////////////////////////////////////
/ / MyProviderRS.h
แม่แบบ lt คลาส T คลาส Storage คลาส CreatorClass คลาส ArrayType = CSimpleArray <Storage> >
คลา CMyRowsetImpl:
สาธารณะ CRowsetBaseImpl < T, Storage, CreatorClass, ArrayType >
สาธารณะ IRowsetLocateImpl <T>
{
typedef CRowsetBaseImpl < T, Storage, 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 โทรQueryInterfaceสำหรับทั้งสองIRowsetและ IRowsetLocate อินเทอร์เฟซ?
////////////////////////////////////////////////////////////////////////
/ / MyProviderRS.h
BEGIN_COM_MAP(CMyRowsetImpl)
COM_INTERFACE_ENTRY_IID (IID_IRowsetLocate, IRowset)
COM_INTERFACE_ENTRY(IRowset)
END_COM_MAP()
รับการใช้งานสำหรับคลาสที่ rowset อื่น ๆ ทั้งหมด เชื่อมโยงการ CMyRowsetImpl คลาสกลับไปยังคลาCRowsetBaseImplที่กำหนด โดยการ OLE DB Templates การทำเช่นนี้ ใช้แมโคCOM_INTERFACE_ENTRY_CHAINตามที่แสดงในรหัสต่อไปนี้ แมโคCOM_INTERFACE_ENTRY_CHAINบอกแม่ OLE DB แบบสแกนแผนที่ COM ในCRowsetBaseImplในการตอบสนองต่อการเรียก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()
สุดท้าย เชื่อมโยง RAgentRowset กับ CMyRowsetBaseImpl โดยการปรับเปลี่ยน RAgentRowset สืบทอดจาก CMyRowsetImpl ตามที่แสดงที่นี่:
คลา RAgentRowset: สาธารณะ CMyRowsetImplltRAgentRowset, CAgentMan, CMyProviderCommand & gt
RAgentRowsetขณะนี้สามารถใช้ได้ IRowsetLocate อินเทอร์เฟซในขณะที่ได้ประโยชน์จากส่วนเหลือของการใช้งานสำหรับคลา rowset?
เมื่อทำได้ คุณก็พร้อมที่จะใช้ IRowsetLocateImpl?