Поделиться через


Образец ATLCollections: демонстрация ICollectionOnSTLImpl, CComEnumOnSTL и пользовательских классов политики копирования

Обновлен: Ноябрь 2007

В образце ATLCollections показано использование класса ICollectionOnSTLImpl, класса CComEnumOnSTL и реализация пользовательских классов политики копирования.

s8cb31f2.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение и запуск этого образца

  1. Откройте файл решения ATLCollections.sln.

  2. В меню Построение выберите команду Построить решение.

  3. В меню Отладка выберите команду Запуск без отладки. Коллекции будут проверены с использованием предоставленного клиента C++. Этот клиент выводит содержимое коллекций в окно команд, проходя по коллекциям с использованием свойств Count и Item и перечисляя элементы с использованием свойства _NewEnum. Также проверяются методы Add, Remove и Clear интерфейса IItems.

Об образце

В этом проекте реализованы две COM-коллекции, основанные на данных, которые хранятся в контейнерах STL:

  • Более простой класс CWords является коллекцией BSTR, доступной только для чтения и основанной на данных, хранящихся в виде объектов std::string в массиве std::vector. Этот класс использует пользовательский класс политики копирования VCUE::GenericCopy, определенный в файлах VCUE_Copy.h и VCUE_CopyString.h, для преобразования данных из объектов std::string в тип, подходящий для интерфейса коллекции или перечислителя.

  • Второй класс CItems является коллекцией VARIANT, доступной для чтения и записи и основанной на данных, хранящихся в std::map. Данные CComVariant в схеме используют в качестве ключей объекты CComBSTR (в действительности это объекты CAdapt<CComBSTR>). Этот класс использует пользовательский класс политики копирования VCUE::MapCopy, определенный в файле VCUE_Copy.h, для преобразования сохраненных данных в объекты VARIANT, которые могут быть переданы обратно в COM-клиенты. Класс CItems является производным от класса VCUE::ICollectionOnSTLCopyImpl, определенного в файле VCUE_Collections.h. Этот класс является производным от ICollectionOnSTLImpl и переопределяет метод get__NewEnum так, чтобы каждый перечислитель имел собственную копию данных коллекции. Класс CItems реализует методы Add, Remove и Clear в интерфейсе коллекции.

Ключевые слова

В этом образце используются следующие ключевые слова:

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

s8cb31f2.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Образцы ATL