Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe define uma interface de enumerador baseada numa coleção de Biblioteca Padrão C++.
Sintaxe
template <class Base,
const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base
Parâmetros
Base
Um enumerador COM. Veja IEnumString para um exemplo.
Piid
Um apontador para o ID da interface do enumerador.
T
O tipo de item exposto pela interface do enumerador.
Copy
Uma aula de política de cópia.
CollType
Uma classe de contentores de Biblioteca Padrão em C++.
Membros
Métodos Públicos
| Nome | Description |
|---|---|
| IEnumOnSTLImpl::Clone | A implementação do Clone. |
| IEnumOnSTLImpl::Init | Inicializa o enumerador. |
| IEnumOnSTLImpl::Next | A implementação do Next. |
| IEnumOnSTLImpl::Reset | A implementação do Reset. |
| IEnumOnSTLImpl::Saltar | A implementação do Skip. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| IEnumOnSTLImpl::m_iter | O iterador que representa a posição atual do enumerador dentro da coleção. |
| IEnumOnSTLImpl::m_pcollection | Um ponteiro para o contentor da Biblioteca Padrão C++ que contém os itens a enumerar. |
| IEnumOnSTLImpl::m_spUnk | O IUnknown ponteiro do objeto que fornece a coleção. |
Observações
IEnumOnSTLImpl fornece a implementação de uma interface de enumerador COM, onde os itens a enumerar são armazenados num contentor compatível com C++ Standard Library. Esta classe é análoga à classe CComEnumImpl , que fornece uma implementação para uma interface de enumerador baseada num array.
Observação
Consulte CComEnumImpl::Init para detalhes sobre outras diferenças entre CComEnumImpl e IEnumOnSTLImpl.
Normalmente, não será necessário criar a sua própria classe de enumerador ao derivar desta implementação de interface. Se quiser usar um enumerador fornecido por ATL baseado num contentor de Biblioteca Padrão C++, é mais comum criar uma instância de CComEnumOnSTL, ou criar uma classe de coleção que devolve um enumerador derivando de ICollectionOnSTLImpl.
No entanto, se precisar de fornecer um enumerador personalizado (por exemplo, um que exponha interfaces além da interface do enumerador), pode derivar desta classe. Nesta situação, é provável que precises de sobrescrever o método Clone para fornecer a tua própria implementação.
Hierarquia de herança
Base
IEnumOnSTLImpl
Requerimentos
Cabeçalho: atlcom.h
IEnumOnSTLImpl::Init
Inicializa o enumerador.
HRESULT Init(
IUnknown* pUnkForRelease,
CollType& collection);
Parâmetros
pUnkForRelease
[dentro] O IUnknown indicador de um objeto que deve ser mantido vivo durante a vida do enumerador. Passe NULL se tal objeto não existir.
coleção
Uma referência ao contentor da Biblioteca Padrão C++ que contém os itens a enumerar.
Valor de retorno
Um valor HRESULT padrão.
Observações
Se passar Init uma referência a uma coleção guardada noutro objeto, pode usar o parâmetro pUnkForRelease para garantir que o objeto, e a coleção que ele detém, está disponível pelo tempo que o enumerador precisar.
Deve chamar este método antes de passar um ponteiro para a interface do enumerador de volta a qualquer cliente.
IEnumOnSTLImpl::Clone
Este método proporciona a implementação do método Clone criando um objeto do tipo CComEnumOnSTL, inicializando-o com a mesma coleção e iterador usados pelo objeto atual, e retornando a interface no objeto recém-criado.
STDMETHOD(Clone)(Base** ppEnum);
Parâmetros
ppEnum
[fora] A interface do enumerador num objeto recém-criado clonado a partir do enumerador atual.
Valor de retorno
Um valor HRESULT padrão.
IEnumOnSTLImpl::m_spUnk
O IUnknown ponteiro do objeto que fornece a coleção.
CComPtr<IUnknown> m_spUnk;
Observações
Este ponteiro inteligente mantém uma referência no objeto passado para IEnumOnSTLImpl::Init, garantindo que este permanece vivo durante a vida útil do enumerador.
IEnumOnSTLImpl::m_pcollection
Este membro aponta para a coleção que fornece os dados que impulsionam a implementação da interface do enumerador.
CollType* m_pcollection;
Observações
Este membro é inicializado por uma chamada para IEnumOnSTLImpl::Init.
IEnumOnSTLImpl::m_iter
Este membro contém o iterador usado para assinalar a posição atual dentro da coleção e navegar para os elementos subsequentes.
CollType::iterator m_iter;
IEnumOnSTLImpl::Next
Este método fornece a implementação do método Next .
STDMETHOD(Next)(
ULONG celt,
T* rgelt,
ULONG* pceltFetched);
Parâmetros
Celta
[dentro] O número de elementos pedidos.
rgelt
[fora] O array deve ser preenchido com os elementos.
pceltFetched
[fora] O número de elementos realmente retornava em rgelt. Isto pode ser menor do que celta se permanecerem menos elementos celtas na lista.
Valor de retorno
Um valor HRESULT padrão.
IEnumOnSTLImpl::Reset
Este método fornece a implementação do método Reset .
STDMETHOD(Reset)(void);
Valor de retorno
Um valor HRESULT padrão.
IEnumOnSTLImpl::Saltar
Este método fornece a implementação do método Skip .
STDMETHOD(Skip)(ULONG celt);
Parâmetros
Celta
[dentro] O número de elementos a ignorar.
Valor de retorno
Um valor HRESULT padrão.