IEnumOnSTLImpl – třída
Tato třída definuje rozhraní enumerátoru založené na kolekci standardní knihovny jazyka C++.
Syntaxe
template <class Base,
const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base
Parametry
Základna
Enumerátor MODELU COM. Příklad najdete v souboru IEnumString .
piid
Ukazatel na ID rozhraní enumerátoru.
T
Typ položky vystavené rozhraním enumerátoru.
Kopírování
Třída zásady kopírování.
Typ kola
Třída kontejneru standardní knihovny C++.
Členové
Veřejné metody
Název | Popis |
---|---|
IEnumOnSTLImpl::Clone | Implementace Klonování. |
IEnumOnSTLImpl::Init | Inicializuje enumerátor. |
IEnumOnSTLImpl::Next | Implementace dalšího. |
IEnumOnSTLImpl::Reset | Implementace resetování. |
IEnumOnSTLImpl::Skip | Implementace skipu. |
Veřejné datové členy
Název | Popis |
---|---|
IEnumOnSTLImpl::m_iter | Iterátor, který představuje aktuální pozici enumerátoru v rámci kolekce. |
IEnumOnSTLImpl::m_pcollection | Ukazatel na kontejner standardní knihovny C++ obsahující položky, které mají být výčty. |
IEnumOnSTLImpl::m_spUnk | Ukazatel IUnknown objektu, který poskytuje kolekci. |
Poznámky
IEnumOnSTLImpl
poskytuje implementaci pro rozhraní enumerátoru COM, kde jsou položky výčtu uloženy v kontejneru kompatibilním se standardní knihovnou jazyka C++. Tato třída je analogická k CComEnumImpl třídy, která poskytuje implementaci pro enumerator rozhraní založené na poli.
Poznámka:
Podrobnosti o dalších rozdílech mezi CComEnumImpl
a IEnumOnSTLImpl
.
Obvykle nebudete muset vytvořit vlastní enumerator třídy odvozené z této implementace rozhraní. Pokud chcete použít enumerátor atL zadaný na základě kontejneru standardní knihovny C++, je častější vytvořit instanci CComEnumOnSTL nebo vytvořit třídu kolekce, která vrací enumerátor odvozením z ICollectionOnSTLImpl.
Pokud však potřebujete poskytnout vlastní enumerátor (například ten, který zveřejňuje rozhraní kromě rozhraní enumerátoru), můžete odvodit z této třídy. V této situaci je pravděpodobné, že budete muset přepsat metodu Clone , aby poskytovala vlastní implementaci.
Hierarchie dědičnosti
Base
IEnumOnSTLImpl
Požadavky
Hlavička: atlcom.h
IEnumOnSTLImpl::Init
Inicializuje enumerátor.
HRESULT Init(
IUnknown* pUnkForRelease,
CollType& collection);
Parametry
pUnkForRelease
[v] Ukazatel IUnknown
objektu, který musí být udržován naživu během životnosti enumerátoru. Pokud takový objekt neexistuje, předejte hodnotu NULL.
sbírka
Odkaz na kontejner standardní knihovny jazyka C++, který obsahuje položky, které mají být výčty.
Návratová hodnota
Standardní hodnota HRESULT.
Poznámky
Pokud předáte Init
odkaz na kolekci uloženou v jiném objektu, můžete pomocí parametru pUnkForRelease zajistit, aby byl objekt a kolekce, kterou obsahuje, k dispozici, pokud ho enumerátor potřebuje.
Před předáním ukazatele na rozhraní enumerátoru zpět všem klientům musíte tuto metodu volat.
IEnumOnSTLImpl::Clone
Tato metoda poskytuje implementaci Clone metoda vytvořením objektu typu CComEnumOnSTL
, inicializace se stejnou kolekcí a iterátorem používaným aktuálním objektem a vrácení rozhraní na nově vytvořeném objektu.
STDMETHOD(Clone)(Base** ppEnum);
Parametry
ppEnum
[ven] Rozhraní enumerátoru na nově vytvořeném objektu klonovaném z aktuálního enumerátoru.
Návratová hodnota
Standardní hodnota HRESULT.
IEnumOnSTLImpl::m_spUnk
Ukazatel IUnknown
objektu, který poskytuje kolekci.
CComPtr<IUnknown> m_spUnk;
Poznámky
Tento inteligentní ukazatel udržuje odkaz na objekt předaný IEnumOnSTLImpl::Init a zajišťuje, že zůstane aktivní během životnosti enumerátoru.
IEnumOnSTLImpl::m_pcollection
Tento člen odkazuje na kolekci, která poskytuje data, která řídí implementaci rozhraní enumerátoru.
CollType* m_pcollection;
Poznámky
Tento člen je inicializován voláním IEnumOnSTLImpl::Init.
IEnumOnSTLImpl::m_iter
Tento člen obsahuje iterátor použitý k označení aktuální pozice v kolekci a přechod na další prvky.
CollType::iterator m_iter;
IEnumOnSTLImpl::Next
Tato metoda poskytuje implementaci další metody.
STDMETHOD(Next)(
ULONG celt,
T* rgelt,
ULONG* pceltFetched);
Parametry
Kelt
[v] Požadovaný počet prvků.
rgelt
[ven] Pole, které má být vyplněno prvky.
pceltFetched
[ven] Počet prvků vrácených v rgeltu. To může být menší než celt , pokud méně než celt prvky zůstanou v seznamu.
Návratová hodnota
Standardní hodnota HRESULT.
IEnumOnSTLImpl::Reset
Tato metoda poskytuje implementaci metody Reset .
STDMETHOD(Reset)(void);
Návratová hodnota
Standardní hodnota HRESULT.
IEnumOnSTLImpl::Skip
Tato metoda poskytuje implementaci metody Skip .
STDMETHOD(Skip)(ULONG celt);
Parametry
Kelt
[v] Počet prvků, které se mají přeskočit.
Návratová hodnota
Standardní hodnota HRESULT.