다음을 통해 공유


ATLCollections 샘플: ICollectionOnSTLImpl, CComEnumOnSTL 및 사용자 지정 복사 정책 클래스

업데이트: 2007년 11월

ATLCollections 샘플에서는 ICollectionOnSTLImplCComEnumOnSTL의 사용 방법과 사용자 지정 복사 정책 클래스의 구현 방법을 보여 줍니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

이 샘플을 빌드하고 실행하려면

  1. 솔루션 파일인 ATLCollections.sln을 엽니다.

  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  3. 디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다. 이렇게 하면 제공되는 C++ 클라이언트를 사용하여 컬렉션을 테스트할 수 있습니다. 이 클라이언트에서는 Count 및 Item 속성을 사용하여 전체를 반복하고 _NewEnum 속성을 사용하여 항목을 열거함으로써 명령 창에서 컬렉션의 내용을 출력합니다. IItems 인터페이스의 Add, Remove 및 Clear 메서드도 테스트됩니다.

샘플 정보

이 프로젝트에서는 STL 컨테이너에 저장된 데이터를 기반으로 두 개의 COM 컬렉션을 구현합니다.

  • 두 클래스 중 보다 간단한 클래스인 CWords는 std::vectorstd::string으로 저장된 데이터를 기반으로 하는 읽기 전용 BSTR 컬렉션입니다. 이 클래스는 VCUE_Copy.h와 VCUE_CopyString.h에 정의된 사용자 지정 복사 정책 클래스인 VCUE::GenericCopy를 사용하여 데이터를 std::string에서 해당 컬렉션 또는 열거자 인터페이스에 적절한 형식으로 변환합니다.

  • 두 번째 클래스인 CItems는 std::map에 저장된 데이터를 기반으로 하는 읽기 전용 VARIANT 컬렉션입니다. 이 맵에 있는 CComVariant 데이터는 CComBSTR(실제로는 CAdapt<CComBSTR>)을 키로 사용합니다. 이 클래스는 VCUE_Copy.h에 정의된 사용자 지정 복사 정책 클래스인 VCUE::MapCopy를 사용하여, 저장된 데이터를 COM 클라이언트에 다시 전달할 수 있는 VARIANT로 변환합니다. CItems는 VCUE_Collections.h에 정의된 VCUE::ICollectionOnSTLCopyImpl 클래스에서 파생됩니다. VCUE::ICollectionOnSTLCopyImpl 클래스는 ICollectionOnSTLImpl에서 파생되며 각 열거자가 컬렉션 데이터의 자체 복사본을 가질 수 있도록 get__NewEnum을 재정의합니다. CItems는 컬렉션 인터페이스에서 Add, Remove 및 Clear 메서드를 구현합니다.

키워드

이 샘플에서는 다음의 키워드를 사용합니다.

_Copy, CComEnumOnSTL, ICollectionOnSTLImpl, CAdapt, IEnumVARIANT, std::map, std::string, std::vector

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

참고 항목

기타 리소스

ATL 샘플