CComEnumImpl::Init
Tej metody należy wywołać przed przekazaniem wskaźnika do interfejsu modułu wyliczającego do wszystkich klientów.
HRESULT Init(
T* begin,
T* end,
IUnknown* pUnk,
CComEnumFlags flags = AtlFlagNoCopy
);
Parametry
Rozpoczęcie
Wskaźnik do pierwszego elementu tablicy, zawierające elementy, które mają być wyliczone.end
Wskaźnik do lokalizacji tuż za ostatnim elementem tablicy, zawierające elementy, które mają być wyliczone.pUnk
[w] IUnknown wskaźnik obiektu, który musi być życiu podczas okresu istnienia modułu wyliczającego.Przekazać NULL , jeśli nie istnieje żaden taki obiekt.flags
Flagi określające lub nie modułu wyliczającego powinien przejąć na własność tablicy lub utworzyć kopię.Możliwe wartości są opisane poniżej.
Wartość zwracana
Standard HRESULT wartości.
Uwagi
Tylko raz wywołanie tej metody — zainicjować modułu wyliczającego, użyj go, a następnie je wyrzucić.
Jeśli wskaźniki są przekazywane do elementów w tablicy przechowywanych w innym obiekcie (i nie pytaj numeratora, aby skopiować dane), można użyć pUnk parametr obiektu i tablicy posiada były dostępne dla jak moduł wyliczający ich potrzebuje.Moduł wyliczający posiada po prostu odwołanie COM na obiekt keep alive.Odwołanie COM jest wydawane automatycznie, gdy moduł wyliczający jest niszczony.
flags Parametr pozwala określić, jak moduł wyliczający powinna traktować elementów tablicy do niej przekazany.flagsmożna wykonać jedną z wartości z CComEnumFlags wyliczenie pokazano poniżej:
enum CComEnumFlags
{
AtlFlagNoCopy = 0,
AtlFlagTakeOwnership = 2, // BitOwn
AtlFlagCopy = 3 // BitOwn | BitCopy
};
AtlFlagNoCopy oznacza okres istnienia tablicy nie jest kontrolowana przez moduł wyliczający.W przypadku tablicy albo będzie static lub obiekt, identyfikowane przez pUnk będzie odpowiedzialny za zwolnienie tablicy, kiedy jest już potrzebne.
AtlFlagTakeOwnership oznacza, że zniszczenie tablica ma być kontrolowany przez moduł wyliczający.W przypadku tablicy musi dynamicznie przydzielono za pomocą Nowy.Moduł wyliczający spowoduje usunięcie tablicy w jego destruktor.Zazwyczaj będzie przekazywać NULL dla pUnk, chociaż nadal można przekazać prawidłowego wskaźnika, jeśli muszą być powiadamiany o zniszczenie modułu wyliczającego z jakiegoś powodu.
AtlFlagCopy oznacza, że nowej tablicy ma być tworzony przez skopiowanie do tablicy przekazany do Init.Okres istnienia nowej tablicy jest być kontrolowane przez moduł wyliczający.Moduł wyliczający spowoduje usunięcie tablicy w jego destruktor.Zazwyczaj będzie przekazywać NULL dla pUnk, chociaż nadal można przekazać prawidłowego wskaźnika, jeśli muszą być powiadamiany o zniszczenie modułu wyliczającego z jakiegoś powodu.
[!UWAGA]
Prototyp metoda ta określa elementów tablicy typu jako t, gdzie t został określony jako parametr szablonu do klasy.To jest tego samego typu, który narażony jest metodą interfejsu COM CComEnumImpl::Next.Konsekwencją tego jest fakt, że w przeciwieństwie do IEnumOnSTLImpl, ta klasa nie obsługuje przechowywania różnych i narażeni typy danych.Typ danych elementów w tablicy musi być taki sam, jak typ danych narażonych za pomocą interfejsu COM.
Wymagania
Nagłówek: atlcom.h