Справочник по технологии COM Страница 46. IEnumVARIANT::Clone
|
Страница 46 из 111 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; } |