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.