Поделиться через


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 означает, что разрушение массива, контролируемые перечислителем. В этом случае необходимо динамически выбрать с помощью новый массив. Перечислитель удаляется массив в деструкторе. Как правило, прошедшие бы NULL для панка, хотя можно передать допустимый указатель если необходимо получать уведомления об уничтожения перечислителя по каким-либо причинам.

AtlFlagCopy означает, что новый массив должен быть создан путем копирования массива, передаваемый Init. Время существования нового массива, контролируемые перечислителем. Перечислитель удаляется массив в деструкторе. Как правило, прошедшие бы NULL для панка, хотя можно передать допустимый указатель если необходимо получать уведомления об уничтожения перечислителя по каким-либо причинам.

Примечание

Прототип данного метода задает элементы массива, как был типа T, где T было указано в качестве параметра шаблона в класс.Это тот же тип, предоставить посредством метода CComEnumImpl::Next COM-интерфейса.Включение этого, что, в отличие от IEnumOnSTLImpl этот класс не поддерживает другое хранилище и, предоставляемые типы данных.Тип данных элементов в массиве должен быть тем же, что и тип данных, предоставляемый посредством интерфейса модели COM.

Требования

Header: atlcom.h

См. также

Ссылки

CComEnumImpl Class

IEnumOnSTLImpl::Init