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
대한 구현의 나머지 부분을 활용하는 동안 인터페이스를 사용할 수 있습니다.
이 작업이 완료되면 소비자에게 반환되는 열을 동적으로 확인할 수 있습니다.