Partilhar via


CComEnumImpl::Init

Você deve telefonar esse método antes de passar um ponteiro para a interface de enumerador todos os clientes.

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

Parâmetros

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

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

  • pUnk
    [in] The IUnknown ponteiro de um objeto que deve ser mantido vivo durante o ciclo de vida do enumerador.Passar NULO se não há tal objeto existir.

  • flags
    Sinalizadores que especificam se ou não o enumerador deve apropriar-se de que a matriz ou faça uma cópia dele.Valores possíveis são descritos abaixo.

Valor de retorno

Um padrão HRESULT valor.

Comentários

Chamar esse método somente uma vez — inicializar o enumerador, usá-lo e, em seguida, jogá-lo fora.

Se você passar ponteiros para itens de uma matriz em outro objeto (e não perguntar o enumerador para copiar sistema autônomo dados), você pode usar o pUnk parâmetro para garantir que o objeto e o array mantém disponível para, desde que o enumerador precisa deles.O enumerador simplesmente armazena uma referência COM no objeto para mantê-lo em funcionamento.Referência COM é liberada automaticamente quando o enumerador é destruído.

The flags parâmetro permite especificar como o enumerador deve tratar os elementos da matriz passados para ele. flags pode levar um dos valores a partir do CComEnumFlags enumeração mostrada abaixo:

enum CComEnumFlags

{

AtlFlagNoCopy = 0,

AtlFlagTakeOwnership = 2, // BitOwn

AtlFlagCopy = 3 // BitOwn | BitCopy

};

AtlFlagNoCopy significa que o tempo de vida da matriz não é controlado pelo enumerador.Nesse caso, ambos o array seja estático ou o objeto identificado por pUnk será responsável pela liberação da matriz quando não é mais necessário.

AtlFlagTakeOwnership significa que a destruição do array seja controlado pelo enumerador.Nesse caso, a matriz deve ter sido dinamicamente alocada usando novo.O enumerador excluirá o array em seu destruidor.Normalmente, você poderia passar NULO for pUnk, embora você ainda pode passar um ponteiro válido se você precisar ser notificado sobre a destruição do enumerador por algum motivo.

AtlFlagCopy significa que uma nova matriz a ser criado, copiando a matriz passada para Init. tempo de vida do novo array é ser controlado pelo enumerador.O enumerador excluirá o array em seu destruidor.Normalmente, você poderia passar NULO for pUnk, embora você ainda pode passar um ponteiro válido se você precisar ser notificado sobre a destruição do enumerador por algum motivo.

Observação:

O protótipo desse método Especifica sistema autônomo elementos da matriz sistema autônomo sendo do tipo T, where T foi definido sistema autônomo um parâmetro de modelo para a classe.Isso é do mesmo tipo que é exposto por meio do COM interface do método CComEnumImpl::Next.A implicação disso é que, ao contrário de IEnumOnSTLImpl, essa classe não oferece suporte a diferentes de armazenamento e expostos tipos de dados.O tipo de dados de elementos da matriz deve ser igual o tipo de dados exposto por meio da interface com.

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe CComEnumImpl

IEnumOnSTLImpl::Init

Outros recursos

CComEnumImpl membros