共用方式為


CComEnumImpl::Init

您必須在傳遞指標之前呼叫這個方法會將列舉值介面回所有用戶端。

HRESULT Init( 
   T* begin, 
   T* end, 
   IUnknown* pUnk, 
   CComEnumFlags flags = AtlFlagNoCopy  
);

參數

  • begin
    out 包含項目之陣列的第一個項目的指標會列舉。

  • end
    之位置的指標會包含項目的陣列以外的最後一個項目會被列舉。

  • 拒絕
    [in] 必須保持在列舉程式的存留期 (Lifetime) 內物件的 IUnknown 指標。 如果這些物件不存在,則會傳遞 NULL

  • flags
    旗標會指定列舉值是否應該採用陣列的擁有權或進行複製。 可能的值說明如下。

傳回值

標準 HRESULT 值。

備註

請呼叫這個方法會初始化列舉值,則會使用它,然後扔掉它。

如果您將指標拖曳到另一個物件保存的陣列項目 (以及您不想讓列舉值複製資料),您可以使用 低劣的 參數確保物件和它保有可用的陣列,只要列舉值是必要項目。 列舉值儲存於物件的 COM 參考保持為作用中。 COM 參考,終結時,會自動釋放列舉值。

flags 參數可讓你指定列舉值應該如何將陣列元素傳遞給它。 flags 可接受其中一個如下所示的 CComEnumFlags 列舉型別的值:

enum CComEnumFlags

{

AtlFlagNoCopy = 0,

AtlFlagTakeOwnership = 2, // BitOwn

AtlFlagCopy = 3 // BitOwn | BitCopy

};

AtlFlagNoCopy 表示陣列的存留期 (Lifetime) 不控制項是由列舉值。 在這種情況下,或是陣列靜態或 拒絕 所識別的物件釋放陣列將負責,以及當不再需要。

AtlFlagTakeOwnership 表示陣列的終結由列舉值的控制項。 在這種情況下,必須動態配置的使用 new,陣列。 列舉值會刪除其解構函式的陣列。 一般而言,您會藉由 拒絕的NULL ,不過,您仍然可以將有效的指標如果由於某些原因,您必須通知列舉值的解構。

AtlFlagCopy 表示新陣列透過複製陣列建立傳遞至 Init。 新陣列的存留期是由列舉值的控制項。 列舉值會刪除其解構函式的陣列。 一般而言,您會藉由 拒絕的NULL ,不過,您仍然可以將有效的指標如果由於某些原因,您必須通知列舉值的解構。

注意事項注意事項

這個方法原型指定陣列元素為型別 TT 定義為類別中的樣板參數。這是透過 COM 介面方法 CComEnumImpl::Next公開的型別相同。這個的影響是不同的是, IEnumOnSTLImpl,這個類別不支援其他儲存區和公開的資料型別。元素資料型別陣列中的必須與傳遞至 COM 介面公開的資料型別。

需求

Header: atlcom.h

請參閱

參考

CComEnumImpl Class

IEnumOnSTLImpl::Init