Esempio ATLCollections: dimostrazione di ICollectionOnSTLImpl, di CComEnumOnSTL e di classi criteri di copia personalizzate

Aggiornamento: novembre 2007

Nell'esempio ATLCollections viene illustrato l'utilizzo di ICollectionOnSTLImpl e CComEnumOnSTL e l'implementazione di classi criteri di copia personalizzate.

Nota sulla sicurezza:

Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti.

Per ottenere gli esempi e le istruzioni per l'installazione:

  • In Visual Studio scegliere Esempi dal menu ?.

    Per ulteriori informazioni, vedere Individuazione dei file di esempio.

  • La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.

  • È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.

Generazione ed esecuzione dell'esempio

Per generare ed eseguire l'esempio

  1. Aprire il file di soluzione ATLCollections.sln.

  2. Scegliere Genera soluzione dal menu Genera.

  3. Scegliere Avvia senza eseguire debug dal menu Debug. Il test degli insiemi verrà eseguito mediante il client C++ fornito. Il contenuto degli insiemi viene restituito in una finestra di comando dove lo scorrimento in ciclo viene eseguito mediante le proprietà Count e Item e l'enumerazione tramite la proprietà _NewEnum. Vengono inoltre verificati i metodi Add, Remove e Clear dell'interfaccia IItems.

Informazioni sull'esempio

In questo progetto vengono implementati due insiemi COM basati sui dati archiviati nei contenitori STL.

  • La più semplice delle due classi, CWords, costituisce un insieme di BSTR in sola lettura basato sui dati archiviati come std::strings in un std::vector. Questa classe utilizza la classe criteri di copia personalizzata VCUE::GenericCopy, definita in VCUE_Copy.h e VCUE_CopyString.h, per convertire i dati di std::strings nel tipo appropriato per l'interfaccia dell'enumeratore o dell'insieme.

  • La seconda classe, CItems, costituisce un insieme di VARIANT in lettura/scrittura basato sui dati archiviati in un std::map. I dati CComVariant inclusi nella mappa utilizzano come chiavi CComBSTR, ovvero CAdapt<CComBSTR>. Questa classe utilizza la classe criteri di copia personalizzata VCUE::MapCopy, definita in VCUE_Copy.h, per convertire i dati memorizzati in tipi VARIANT che possono essere restituiti a client COM. CItems deriva dalla classe VCUE::ICollectionOnSTLCopyImpl, definita VCUE_Collections.h, che a propria volta deriva da ICollectionOnSTLImpl e consente di eseguire l'override di get__NewEnum, affinché ciascun enumeratore disponga di un'apposita copia dei dati dell'insieme. CItems implementa i metodi Add, Remove e Clear nell'interfaccia dell'insieme.

Parole chiave

Nell'esempio vengono utilizzate le parole chiave seguenti:

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

Nota:

Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata.

Vedere anche

Altre risorse

Esempi relativi ad ATL