CComEnumImpl::Init
您必须在将指针之前调用此方法以枚举器接口回所有客户端。
HRESULT Init(
T* begin,
T* end,
IUnknown* pUnk,
CComEnumFlags flags = AtlFlagNoCopy
);
参数
begin
到包含项目的数组的第一个元素的指针将枚举。end
为位置的指针在包含项目文件的数组外的最后一个组件将枚举。拒绝
[in]必须对运行在枚举数的生存期内对象的 IUnknown 指针。 ;如果该对象不存在,请通过 NULL。flags
标记指定枚举数是否应采用数组的所有权或进行复制它。 可能的值下述。
返回值
标准 HRESULT 值。
备注
只调用此方法使用初始化枚举数,使用它,然后扔掉它。
如果通过指针在另一个对象保存数组的项(和不需要枚举数复制数据),则可以使用该 差的 参数确保对象并对其进行可用的数组,只要枚举器需要它们。 枚举数在对象保存一COM引用保持其运行。 当销毁时,COM引用将自动释放枚举器。
flags 参数使您得以指定枚举数应如何将数组元素传递给它。 flags 可以采用某个从如下所示的 CComEnumFlags 枚举的值:
enum CComEnumFlags
{
AtlFlagNoCopy = 0,
AtlFlagTakeOwnership = 2, // BitOwn
AtlFlagCopy = 3 // BitOwn | BitCopy
};
AtlFlagNoCopy 意味着数组的生存期不受枚举数。 在这种情况下,或者该数组将是静态的或 拒绝 确定的对象传递给释放该数组将负责,当不再需要。
AtlFlagTakeOwnership 意味着数组的损坏将由枚举数控件。 在这种情况下,必须动态分配了使用 new,该数组。 枚举器将删除在其析构函数的数组。 通常,会通过 拒绝的NULL,不过,您仍然可以通过有效指针由于某种原因,如果需要得到通知枚举数的损坏。
AtlFlagCopy 意味着一个新的数组将通过复制数组创建传递给 Init。 新数组的生存期将由枚举数控件。 枚举器将删除在其析构函数的数组。 通常,会通过 拒绝的NULL,不过,您仍然可以通过有效指针由于某种原因,如果需要得到通知枚举数的损坏。
备注
此方法原型指定数组元素作为类型 T,T 定义为选件类的一个模板参数。这是通过COM接口方法 CComEnumImpl::Next显示的同一类型。其含义是不同,IEnumOnSTLImpl,此选件类不支持其他存储和显示的数据类型。元素的数据类型在数组必须是为数据类型通过COM接口公开的相同。
要求
Header: atlcom.h