Freigeben über


ATLCollections-Beispiel: Demonstriert "ICollectionOnSTLImpl", "CComEnumOnSTL" und benutzerdefinierte Kopierrichtlinienklassen

Aktualisiert: November 2007

Das ATLCollections-Beispiel demonstriert die Verwendung von ICollectionOnSTLImpl und CComEnumOnSTL und die Implementierung von benutzerdefinierten Kopierrichtlinienklassen.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie dieses Beispiel und führen es aus

  1. Öffnen Sie die Projektmappendatei ATLCollections.sln.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  3. Klicken Sie im Menü Debuggen auf Starten ohne Debuggen. Dadurch werden die Auflistungen mit dem mitgelieferten C++-Client getestet. Dieser Client zeigt den Inhalt der Auflistungen in einem Befehlsfenster an, indem er die Eigenschaften Count und Item in einer Schleife durchläuft und die Elemente mithilfe der _NewEnum-Eigenschaft auflistet. Außerdem werden die Methoden Add, Remove und Clear der IItems-Schnittstelle getestet.

Über dieses Beispiel

Dieses Projekt implementiert zwei COM-Auflistungen, die auf in STL-Containern gespeicherten Daten basieren:

  • Die einfachere der beiden Klassen, CWords, ist eine schreibgeschützte BSTR-Auflistung, die auf Daten basiert, die in einem std::vector als std::strings gespeichert sind. Diese Klasse verwendet die in VCUE_Copy.h und VCUE_CopyString.h definierte benutzerdefinierte Kopierrichtlinienklasse VCUE::GenericCopy, um die Daten aus std::strings in den für die Auflistung oder die Enumeratorschnittstelle angemessenen Typ zu konvertieren.

  • Die zweite Klasse, CItems, ist eine VARIANT-Auflistung mit Lese- und Schreibzugriff, die auf in std::map gespeicherten Daten basiert. Die CComVariant-Daten in der Zuordnung verwenden CComBSTRs (genauer: **CAdapt<CComBSTR>**s) als Schlüssel. Diese Klasse verwendet die in VCUE_Copy.h enthaltene benutzerdefinierte Kopierrichtlinienklasse VCUE::MapCopy, um die gespeicherten Daten in VARIANTs zu konvertieren, die an COM-Clients zurückgegeben werden können. CItems ist von der in VCUE_Collections.h definierten VCUE::ICollectionOnSTLCopyImpl-Klasse abgeleitet. Letztere Klasse ist wiederum eine Ableitung von ICollectionOnSTLImpl und überschreibt get__NewEnum, sodass jeder Enumerator eigene Kopien der aufgelisteten Daten enthält. CItems implementiert die Methoden Add, Remove und Clear in der Auflistungsschnittstelle.

Schlüsselwörter

In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:

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

Hinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Siehe auch

Weitere Ressourcen

ATL-Beispiele