Compartilhar via


CComEnumImpl::Init

Você deve chamar este método antes de passar um ponteiro para a interface do enumerador de volta a todos os clientes.

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

Parâmetros

  • inicie
    Um ponteiro para o primeiro elemento da matriz que contém os itens a serem enumerados.

  • end
    Um ponteiro para o local apenas além do último elemento da matriz que contém os itens a serem enumerados.

  • punk
    [in] ponteiro do IUnknown de um objeto que deve ser mantida ativa durante o ciclo de vida do enumerador.Passagem NULO se nenhum tal objeto existe.

  • flags
    Sinaliza especificar se o enumerador deve levar a matriz armazenar ou fazer uma cópia de ele.Os valores possíveis são descritos em.

Valor de retorno

Um valor padrão de HRESULT .

Comentários

Chamar este método somente uma vez — inicializar o enumerador, use, então jogue-o possam.

Se você passar ponteiros para itens em uma matriz executado em outro objeto (e não parte do enumerador copiar os dados), você pode usar o parâmetro punk para garantir que o objeto e a matriz pressionando está disponível para que o enumerador os precisa.O enumerador contém somente COM uma referência do objeto para mantê-lo ativa.As referências COM é liberada automaticamente quando o enumerador é destruído.

O parâmetro de flags permite que você especifique como o enumerador deve tratar elementos da matriz passados a ele.flags pode ter um dos valores da enumeração de CComEnumFlags mostrado abaixo:

enum CComEnumFlags

{

AtlFlagNoCopy = 0,

AtlFlagTakeOwnership = 2, // BitOwn

AtlFlagCopy = 3 // BitOwn | BitCopy

};

AtlFlagNoCopy significa que o tempo de vida de matriz não é controlado pelo enumerador.Em esse caso, ou a matriz será estático ou o objeto identificado pelo punk será responsável para liberar a matriz quando ele não for necessário.

AtlFlagTakeOwnership significa que a destruição de matriz deve ser controlado pelo enumerador.Em esse caso, a matriz deve ter sido dinamicamente atribuída usando new.O enumerador excluirá a matriz no destrutor.Normalmente, você deve NULO para o punk, embora você ainda pode passar um ponteiro válido se você precisa ser notificado da destruição de enumerador por algum motivo.

AtlFlagCopy significa que uma nova matriz deve ser criada copiando a matriz passada a Init.Tempo de vida o novo de matriz deve ser controlado pelo enumerador.O enumerador excluirá a matriz no destrutor.Normalmente, você deve NULO para o punk, embora você ainda pode passar um ponteiro válido se você precisa ser notificado da destruição de enumerador por algum motivo.

ObservaçãoObservação

O protótipo de esse método especifica os elementos da matriz como sendo do tipo T, onde T foi definido como um parâmetro de modelo a classe.Esse é o mesmo tipo que é exposto por meio do método CComEnumImpl::Nextda interface COM.A implicação de isso é que, ao contrário de IEnumOnSTLImpl, esta classe não oferece suporte ao armazenamento diferente e tipos de dados expostas.O tipo de dados de elementos da matriz deve ser o mesmo que o tipo de dados expostos por meio da interface COM.

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe de CComEnumImpl

IEnumOnSTLImpl::Init