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,不过,您仍然可以通过有效指针由于某种原因,如果需要得到通知枚举数的损坏。

备注

此方法原型指定数组元素作为类型 TT 定义为选件类的一个模板参数。这是通过COM接口方法 CComEnumImpl::Next显示的同一类型。其含义是不同,IEnumOnSTLImpl,此选件类不支持其他存储和显示的数据类型。元素的数据类型在数组必须是为数据类型通过COM接口公开的相同。

要求

Header: atlcom.h

请参见

参考

CComEnumImpl选件类

IEnumOnSTLImpl::Init