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çã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