Справочник по технологии COM
Страница 46. IEnumVARIANT::Clone


 

IEnumVARIANT::Clone

Создает копию текущего состояния перечислителя.

HRESULT Clone
(
lEnumVARIANT FAR* FAR*ppEnum
);

Параметр:

  • ppEnum - После возврата указывает на копию перечислителя.

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возврата Значение
S_OK Успех.
E_OUTOFMEMORY He хватает памяти для выполнения операции.

Комментарии:
С помощью этой функции можно запомнить некоторую точку в последовательности перечисления, чтобы позднее к ней возвратиться. Полученный перечислитель имеет тот же интерфейс, что и оригинальный. При повторном перечислении не гарантируется возврат той же самой последовательности вариантов, что при первом. Хотя точное повторение и желательно, результат зависит от перечисляемого набора. Для некоторых наборов выполнение этого условия может оказаться непрактичным (например, в случае перечисления файлов в каталоге).

Пример:

Следующий код реализует IEnumVARIANT::Clone для наборов из примера Lines (файл Enumvar.cpp).

STDMETHODIMP
CEnumVariant::Clone(IEnumVARIANT FAR* FAR* ppenum)
{
CEnumVariant FAR* penum = NULL;
HRESULT hr;

*ppenum = NULL;

hr = CEnumVariant::Create(m_psa, m_cElements, &penum);
if (FAILED(hr))
goto error;
penum->AddRef();
penum->m_lCurrent = m_lCurrent;

*ppenum = penum;
return NOERROR;

error:
if (penum)
penum->Release();
return hr;
}

 
Следующая статья »