Udostępnij za pośrednictwem


Klasa IEnumOnSTLImpl

Ta klasa definiuje interfejs wyliczający oparty na kolekcji standardowej biblioteki języka C++.

Składnia

template <class Base,
    const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base

Parametry

Baza
Moduł wyliczający COM. Zobacz przykład IEnumString .

piid
Wskaźnik do identyfikatora interfejsu interfejsu modułu wyliczającego.

T
Typ elementu uwidocznionego przez interfejs modułu wyliczającego.

kopia
Klasa zasad kopiowania.

Typ sortowania
Klasa kontenera biblioteki standardowej C++.

Elementy członkowskie

Metody publiczne

Nazwa/nazwisko opis
IEnumOnSTLImpl::Clone Implementacja polecenia Clone.
IEnumOnSTLImpl::Init Inicjuje moduł wyliczający.
IEnumOnSTLImpl::Next Implementacja pozycji Dalej.
IEnumOnSTLImpl::Reset Implementacja funkcji Reset.
IEnumOnSTLImpl::Skip Implementacja pomiń.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
IEnumOnSTLImpl::m_iter Iterator reprezentujący bieżącą pozycję modułu wyliczającego w kolekcji.
IEnumOnSTLImpl::m_pcollection Wskaźnik do kontenera biblioteki standardowej języka C++ zawierającego elementy do wyliczenia.
IEnumOnSTLImpl::m_spUnk Wskaźnik IUnknown obiektu dostarczającego kolekcję.

Uwagi

IEnumOnSTLImpl Udostępnia implementację interfejsu modułu wyliczającego COM, w którym elementy wyliczane są przechowywane w kontenerze zgodnym z biblioteką standardową języka C++. Ta klasa jest analogiczna do klasy CComEnumImpl , która zapewnia implementację interfejsu modułu wyliczającego na podstawie tablicy.

Uwaga

Zobacz CComEnumImpl::Init , aby uzyskać szczegółowe informacje na temat dalszych różnic między CComEnumImpl i IEnumOnSTLImpl.

Zazwyczaj nie trzeba tworzyć własnej klasy modułu wyliczającego, wyprowadzając je z tej implementacji interfejsu. Jeśli chcesz użyć modułu wyliczającego dostarczonego przez ATL opartego na kontenerze biblioteki standardowej języka C++, częściej jest tworzyć wystąpienie biblioteki CComEnumOnSTL lub utworzyć klasę kolekcji zwracającą moduł wyliczający przez wyprowadzenie z ICollectionOnSTLImpl.

Jeśli jednak musisz podać niestandardowy moduł wyliczający (na przykład taki, który uwidacznia interfejsy oprócz interfejsu modułu wyliczającego), możesz pochodzić z tej klasy. W takiej sytuacji prawdopodobnie konieczne będzie zastąpienie metody Clone , aby zapewnić własną implementację.

Hierarchia dziedziczenia

Base

IEnumOnSTLImpl

Wymagania

Nagłówek: atlcom.h

IEnumOnSTLImpl::Init

Inicjuje moduł wyliczający.

HRESULT Init(
    IUnknown* pUnkForRelease,
    CollType& collection);

Parametry

pUnkForRelease
[in] Wskaźnik IUnknown obiektu, który musi być utrzymywany przy życiu w okresie istnienia modułu wyliczającego. Przekaż wartość NULL, jeśli taki obiekt nie istnieje.

kolekcja
Odwołanie do kontenera biblioteki standardowej języka C++ zawierającego elementy do wyliczenia.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

Jeśli przekażesz Init odwołanie do kolekcji przechowywanej w innym obiekcie, możesz użyć parametru pUnkForRelease , aby upewnić się, że obiekt i kolekcja, która jest przechowywana, jest dostępny tak długo, jak moduł wyliczający go potrzebuje.

Tę metodę należy wywołać przed przekazaniem wskaźnika do interfejsu modułu wyliczającego z powrotem do wszystkich klientów.

IEnumOnSTLImpl::Clone

Ta metoda zapewnia implementację metody Clone przez utworzenie obiektu typu CComEnumOnSTL, zainicjowanie go przy użyciu tej samej kolekcji i iteratora używanego przez bieżący obiekt oraz zwrócenie interfejsu na nowo utworzonym obiekcie.

STDMETHOD(Clone)(Base** ppEnum);

Parametry

ppEnum
[out] Interfejs modułu wyliczającego na nowo utworzonym obiekcie sklonowanym z bieżącego modułu wyliczającego.

Wartość zwracana

Standardowa wartość HRESULT.

IEnumOnSTLImpl::m_spUnk

Wskaźnik IUnknown obiektu dostarczającego kolekcję.

CComPtr<IUnknown> m_spUnk;

Uwagi

Ten inteligentny wskaźnik utrzymuje odwołanie do obiektu przekazanego do obiektu IEnumOnSTLImpl::Init, zapewniając, że pozostaje on żywy w okresie istnienia modułu wyliczającego.

IEnumOnSTLImpl::m_pcollection

Ten element członkowski wskazuje kolekcję, która dostarcza dane napędzające implementację interfejsu modułu wyliczającego.

CollType* m_pcollection;

Uwagi

Ten element członkowski jest inicjowany przez wywołanie metody IEnumOnSTLImpl::Init.

IEnumOnSTLImpl::m_iter

Ten element członkowski zawiera iterator używany do oznaczania bieżącego położenia w kolekcji i przechodzenia do kolejnych elementów.

CollType::iterator m_iter;

IEnumOnSTLImpl::Next

Ta metoda zapewnia implementację metody Next .

STDMETHOD(Next)(
    ULONG celt,
    T* rgelt,
    ULONG* pceltFetched);

Parametry

Celt
[in] Liczba żądanych elementów.

rgelt
[out] Tablica, która ma zostać wypełniona elementami.

pceltFetched
[out] Liczba elementów rzeczywiście zwróconych w rgelt. Może to być mniej niż celt, jeśli na liście pozostanie mniej niż elementy celt.

Wartość zwracana

Standardowa wartość HRESULT.

IEnumOnSTLImpl::Reset

Ta metoda zapewnia implementację metody Reset .

STDMETHOD(Reset)(void);

Wartość zwracana

Standardowa wartość HRESULT.

IEnumOnSTLImpl::Skip

Ta metoda zapewnia implementację metody Skip .

STDMETHOD(Skip)(ULONG celt);

Parametry

Celt
[in] Liczba elementów do pominięcia.

Wartość zwracana

Standardowa wartość HRESULT.

Zobacz też

Omówienie klasy