다음을 통해 공유


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 >>
{
...
};

이제 CustomRS.h에서 COM 인터페이스 맵을 다음과 같이 편집합니다.

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

이 코드는 인터페이스와 IRowsetLocate 인터페이스를 모두 호출 QueryInterface 하도록 지시 CMyRowsetImpl 하는 COM 인터페이스 맵을 IRowset 만듭니다. 다른 행 집합 클래스에 대한 모든 구현을 가져오기 위해 맵은 클래스를 CRowsetBaseImpl OLE DB 템플릿에서 정의한 클래스로 다시 연결 CMyRowsetImpl 합니다. 맵은 OLE DB 템플릿에 호출에 대한 응답으로 COM 맵 CRowsetBaseImpl 을 검색하도록 지시하는 COM_INTERFACE_ENTRY_CHAIN 매크로를 QueryInterface 사용합니다.

마지막으로 다음과 같이 상속CMyRowsetImpl하도록 수정하여 CCustomRowset 연결 CCustomRowset CMyRowsetBaseImpl 합니다.

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

CCustomRowset 는 이제 행 집합 클래스에 IRowsetLocate 대한 구현의 나머지 부분을 활용하는 동안 인터페이스를 사용할 수 있습니다.

이 작업이 완료되면 소비자에게 반환되는 열을 동적으로 확인할 수 있습니다.

참고 항목

단순한 읽기 전용 공급자의 기능 향상