Partager via


ATLCollections, exemple : illustre ICollectionOnSTLImpl, CComEnumOnSTL et des classes de stratégie de copie personnalisées

Mise à jour : novembre 2007

L'exemple ATLCollections illustre l'utilisation de ICollectionOnSTLImpl et de CComEnumOnSTL ainsi que l'implémentation des classes de stratégie de copie personnalisées.

Note de sécurité :

Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues.

Pour obtenir des exemples et des instructions d'installation :

  • Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.

    Pour plus d'informations, consultez Recherche des fichiers d'exemple.

  • La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.

Génération et exécution de l'exemple

Pour générer et exécuter cet exemple

  1. Ouvrez le fichier solution ATLCollections.sln.

  2. Dans le menu Générer, cliquez sur Générer la solution.

  3. Dans le menu Déboguer, cliquez sur Exécuter sans débogage. Les collections sont alors testées à l'aide du client C++ fourni. Ce client renvoie le contenu des collections dans une fenêtre Commande en effectuant une boucle à l'aide des propriétés Count et Item et en énumérant les éléments à l'aide de la propriété _NewEnum. Les méthodes Add, Remove et Clear de l'interface IItems sont également testées.

À propos de l'exemple

Ce projet implémente deux collections COM basées sur des données stockées dans des conteneurs STL :

  • La plus simple des deux classes, CWords, est une collection de type BSTR en lecture seule basée sur des données stockées sous la forme std::strings dans un std::vector. Cette classe utilise la classe de stratégie de copie personnalisée VCUE::GenericCopy, définie dans VCUE_Copy.h et VCUE_CopyString.h afin de convertir les données provenant de std::strings dans le type adéquat pour l'interface de la collection ou de l'énumérateur.

  • La deuxième classe, CItems, est une collection VARIANT accessible en lecture-écriture, basée sur des données stockées dans un std::map. Les données CComVariant de la table utilisent des CComBSTR (très exactement, CAdapt<CComBSTR>) en tant que clés. Cette classe utilise la classe de stratégies de copie personnalisée VCUE::MapCopy, définie dans VCUE_Copy.h, afin de convertir les données stockées en VARIANT pouvant être repassées aux clients COM. CItems dérive de la classe VCUE::ICollectionOnSTLCopyImpl, définie dans VCUE_Collections.h. La dernière classe dérive de ICollectionOnSTLImpl et substitue get__NewEnum afin que chaque énumérateur ait sa propre copie des données de la collection. CItems implémente les méthodes Add, Remove et Clear dans l'interface de la collection.

Mots clés

Cet exemple utilise les mots clés suivants :

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

Remarque :

Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée.

Voir aussi

Autres ressources

Exemples ATL