Classe IEnumOnSTLImpl
Questa classe definisce un'interfaccia enumeratore basata su una raccolta di librerie standard C++.
Sintassi
template <class Base,
const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base
Parametri
Base
Enumeratore COM. Per un esempio, vedere IEnumString .
piid
Puntatore all'ID interfaccia dell'interfaccia dell'enumeratore.
T
Tipo di elemento esposto dall'interfaccia dell'enumeratore.
Copia
Classe di criteri di copia.
CollType
Classe contenitore della libreria standard C++.
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
IEnumOnSTLImpl::Clone | Implementazione di Clone. |
IEnumOnSTLImpl::Init | Inizializza l'enumeratore. |
IEnumOnSTLImpl::Next | Implementazione di Next. |
IEnumOnSTLImpl::Reset | Implementazione di Reset. |
IEnumOnSTLImpl::Skip | Implementazione di Skip. |
Membri dati pubblici
Nome | Descrizione |
---|---|
IEnumOnSTLImpl::m_iter | Iteratore che rappresenta la posizione corrente dell'enumeratore all'interno dell'insieme. |
IEnumOnSTLImpl::m_pcollection | Puntatore al contenitore della libreria standard C++ che contiene gli elementi da enumerare. |
IEnumOnSTLImpl::m_spUnk | Puntatore IUnknown dell'oggetto che fornisce l'insieme. |
Osservazioni:
IEnumOnSTLImpl
fornisce l'implementazione per un'interfaccia dell'enumeratore COM in cui gli elementi enumerati vengono archiviati in un contenitore compatibile con la libreria standard C++. Questa classe è analoga alla classe CComEnumImpl , che fornisce un'implementazione per un'interfaccia enumeratore basata su una matrice.
Nota
Per informazioni dettagliate sulle altre differenze tra CComEnumImpl
e IEnumOnSTLImpl
, vedere CComEnumImpl::Init.
In genere, non sarà necessario creare una classe enumeratore personalizzata derivando da questa implementazione dell'interfaccia. Se si vuole usare un enumeratore fornito da ATL basato su un contenitore della libreria standard C++, è più comune creare un'istanza di CComEnumOnSTL o creare una classe di raccolta che restituisce un enumeratore derivando da ICollectionOnSTLImpl.
Tuttavia, se è necessario fornire un enumeratore personalizzato (ad esempio, uno che espone interfacce oltre all'interfaccia dell'enumeratore), è possibile derivare da questa classe. In questa situazione è probabile che sia necessario eseguire l'override del metodo Clone per fornire la propria implementazione.
Gerarchia di ereditarietà
Base
IEnumOnSTLImpl
Requisiti
Intestazione: atlcom.h
IEnumOnSTLImpl::Init
Inizializza l'enumeratore.
HRESULT Init(
IUnknown* pUnkForRelease,
CollType& collection);
Parametri
pUnkForRelease
[in] Puntatore IUnknown
di un oggetto che deve essere mantenuto attivo durante la durata dell'enumeratore. Passare NULL se non esiste alcun oggetto di questo tipo.
collection
Riferimento al contenitore della libreria standard C++ che contiene gli elementi da enumerare.
Valore restituito
Valore HRESULT standard.
Osservazioni:
Se si passa Init
un riferimento a una raccolta contenuta in un altro oggetto, è possibile utilizzare il parametro pUnkForRelease per assicurarsi che l'oggetto e l'insieme in esso contenuto siano disponibili purché l'enumeratore lo richieda.
È necessario chiamare questo metodo prima di passare un puntatore all'interfaccia dell'enumeratore a tutti i client.
IEnumOnSTLImpl::Clone
Questo metodo fornisce l'implementazione del metodo Clone creando un oggetto di tipo CComEnumOnSTL
, inizializzandolo con la stessa raccolta e iteratore utilizzato dall'oggetto corrente e restituendo l'interfaccia sull'oggetto appena creato.
STDMETHOD(Clone)(Base** ppEnum);
Parametri
ppEnum
[out] Interfaccia dell'enumeratore in un oggetto appena creato clonato dall'enumeratore corrente.
Valore restituito
Valore HRESULT standard.
IEnumOnSTLImpl::m_spUnk
Puntatore IUnknown
dell'oggetto che fornisce l'insieme.
CComPtr<IUnknown> m_spUnk;
Osservazioni:
Questo puntatore intelligente mantiene un riferimento sull'oggetto passato a IEnumOnSTLImpl::Init, assicurandosi che rimanga attivo durante la durata dell'enumeratore.
IEnumOnSTLImpl::m_pcollection
Questo membro punta alla raccolta che fornisce i dati che guidano l'implementazione dell'interfaccia dell'enumeratore.
CollType* m_pcollection;
Osservazioni:
Questo membro viene inizializzato da una chiamata a IEnumOnSTLImpl::Init.
IEnumOnSTLImpl::m_iter
Questo membro contiene l'iteratore utilizzato per contrassegnare la posizione corrente all'interno della raccolta e passare agli elementi successivi.
CollType::iterator m_iter;
IEnumOnSTLImpl::Next
Questo metodo fornisce l'implementazione del metodo Next .
STDMETHOD(Next)(
ULONG celt,
T* rgelt,
ULONG* pceltFetched);
Parametri
celta
[in] Numero di elementi richiesti.
rgelt
[out] Matrice da riempire con gli elementi.
pceltFetched
[out] Numero di elementi effettivamente restituiti in rgelt. Può essere minore di celt se nell'elenco rimangono meno di elementi celt .
Valore restituito
Valore HRESULT standard.
IEnumOnSTLImpl::Reset
Questo metodo fornisce l'implementazione del metodo Reset .
STDMETHOD(Reset)(void);
Valore restituito
Valore HRESULT standard.
IEnumOnSTLImpl::Skip
Questo metodo fornisce l'implementazione del metodo Skip .
STDMETHOD(Skip)(ULONG celt);
Parametri
celta
[in] Numero di elementi da ignorare.
Valore restituito
Valore HRESULT standard.