共用方式為


ATLCollections 範例:示範 ICollectionOnSTLImpl、CComEnumOnSTL 和自訂複製原則類別

更新:2007 年 11 月

ATLCollections 範例示範 ICollectionOnSTLImplCComEnumOnSTL 的用法,以及自訂複製原則類別的實作。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置和執行這個範例

  1. 開啟 ATLCollections.sln 方案檔。

  2. 在 [建置] 功能表中,按一下 [建置方案]。

  3. 從 [偵錯]功能表中,按一下 [啟動但不偵錯]。這樣就可以使用所提供的 C++ 用戶端來測試集合。這個用戶端會使用 Count 和 Item 屬性來形成迴圈,並使用 _NewEnum 屬性來列舉項目,以將集合的內容輸出至命令視窗,而且也會測試 IItems 介面的 Add、Remove 和 Clear 方法。

關於範例

本專案會根據儲存在 STL 容器中的資料實作兩個 COM 集合物件:

  • 這兩個類別之中較簡單的 CWords 類別是唯讀 BSTR 集合,是以在 std::vector 中儲存為 std::string 的資料做為基礎。這個類別會使用定義於 VCUE_Copy.h 和 VCUE_CopyString.h 中的自訂複製原則類別 VCUE::GenericCopy,將資料從 std::strings 轉換成適合集合或列舉值介面使用的型別。

  • 第二個類別 CItems 是可讀寫的 VARIANT 集合,是以儲存在 std::map 中的資料做為基礎。對應中的 CComVariant 資料是使用 CComBSTR (實際上是 CAdapt<CComBSTR>) 當做索引鍵。這個類別會使用 VCUE_Copy.h 中所定義的自訂複製原則類別 VCUE::MapCopy,將儲存的資料轉換為可以被傳回至 COM 用戶端的 VARIANT。CItems 是衍生自 VCUE_Collections.h 中所定義的 VCUE::ICollectionOnSTLCopyImpl 類別。後者的類別是衍生自 ICollectionOnSTLImpl 並覆寫 get__NewEnum,因此每個列舉值都有自己的集合資料複本。CItems 會在集合介面中實作 Add、Remove 和 Clear 方法。

關鍵字

本範例使用下列關鍵字:

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

注意事項:

部分範例 (包括本範例) 尚未經過改寫,無法反映出目前在 Visual C++ 精靈、程式庫以及編譯器方面的變更,不過還是可以示範如何完成您要進行的工作。

請參閱

其他資源

ATL 範例