次の方法で共有


ATLCollections サンプル:ICollectionOnSTLImpl、CComEnumOnSTL、およびユーザー設定のコピー ポリシー クラスを示します

ATLCollections サンプルでは、ICollectionOnSTLImplCComEnumOnSTL の使用例と、カスタム コピー ポリシー クラスの実装例を示します。

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

サンプルとそのインストール手順を取得するには

Visual Studio のサンプルにアクセスするには

  • [ヘルプ] メニューの [サンプル] をクリックします。

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

このサンプルをビルドして実行するには

  1. ソリューション ファイル ATLCollections.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  3. メニューの [デバッグ、 デバッグなしで開始] をクリックします。 これにより、指定された C++ クライアントを使用してコレクションをテストできます。 このクライアントは、Count プロパティと Item プロパティを使用してループし、_NewEnum プロパティを使用してアイテムを列挙することにより、コレクションの内容をコマンド ウィンドウに出力します。 Add インターフェイスの Remove、Clear、および IItems の各メソッドもテストされます。

サンプルについて

このプロジェクトでは、STL コンテナーに格納されているデータに基づく、以下の 2 つの COM コレクションを実装します。

  • 単純なは、2 つのクラス、CWordsでに BSTRstd::string%s として保存されているデータに基づいて、読み取り専用 std::vector コレクションです。 このクラスでは、VCUE_Copy.h と VCUE_CopyString.h で定義のカスタム コピー ポリシー クラス VCUE::GenericCopyを使用してコレクションまたは列挙子インターフェイスの適切な種類に std::string %s からデータを変換します。

  • 2 番目のクラス、CItemsVARIANT に格納されているデータに基づいて、読み取り/書き込み std::map コレクションです。 CComVariant データ マップの CComBSTR%s (実際に < CAdapt>CComBSTR %s) をキーとして使用します。 このクラスは、VCUE_Copy.h では、定義のカスタム コピー ポリシー クラス VCUE::MapCopyを使用して COM クライアントに再度渡すことができる VARIANT %s に保存されたデータを変換します。 CItems クラス VCUE::ICollectionOnSTLCopyImpl が VCUE_Collections.h で定義されているから派生します。 後者のクラスは、ICollectionOnSTLImpl から派生し、各列挙子をコレクションのデータの独自のコピーがあるように get__NewEnum を上書きします。 CItems Add Remove Clear メソッドはコレクション インターフェイスに実装されています。

Keywords

このサンプルでは、次のキーワードを使用します。

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

注意

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

ATL サンプル