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 ,不過,您仍然可以將有效的指標如果由於某些原因,您必須通知列舉值的解構。
注意事項 |
---|
這個方法原型指定陣列元素為型別 T, T 定義為類別中的樣板參數。這是透過 COM 介面方法 CComEnumImpl::Next公開的型別相同。這個的影響是不同的是, IEnumOnSTLImpl,這個類別不支援其他儲存區和公開的資料型別。元素資料型別陣列中的必須與傳遞至 COM 介面公開的資料型別。 |
需求
Header: atlcom.h