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