Метод IEnumVARIANT::Next (oaidl.h)
Извлекает указанные элементы в последовательности перечисления.
Синтаксис
HRESULT Next(
[in] ULONG celt,
[out] VARIANT *rgVar,
[out] ULONG *pCeltFetched
);
Параметры
[in] celt
Количество извлекаемых элементов
[out] rgVar
Массив по крайней мере размера celt , в котором должны возвращаться элементы.
[out] pCeltFetched
Количество элементов, возвращаемых в rgVar или NULL.
Возвращаемое значение
Этот метод может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Число возвращаемых элементов равно celt. |
|
Количество возвращаемых элементов меньше celt. |
Комментарии
Если в последовательности осталось меньше запрошенного числа элементов, функция Далее возвращает только оставшиеся элементы. Фактическое количество элементов возвращается в pCeltFetched, если оно не равно NULL.
Примеры
Следующий код реализует IEnumVariant::Next. Полный пример реализации интерфейса IEnumVariant доступен в примере com Fundamentals Lines (Enumvar.cpp).
STDMETHODIMP
CEnumVariant::Next(ULONG cElements, VARIANT * pvar, ULONG * pcElementFetched)
{
HRESULT hr;
ULONG l;
long l1;
ULONG l2;
if (pcElementFetched != NULL)
*pcElementFetched = 0;
if (pvar == NULL)
return E_INVALIDARG;
for (l=0; l<cElements; l++)
VariantInit(&pvar[l]);
// Retrieve the next cElements elements.
// m_lLBound+m_cElements = # of elements in the m_psa collection.
for (l1=m_lCurrent, l2=0; l1<(long)(m_lLBound+m_cElements) &&
l2<cElements; l1++, l2++)
{
hr = SafeArrayGetElement(m_psa, &l1, &pvar[l2]);
if (FAILED(hr))
goto error;
}
// Set count of elements retrieved.
if (pcElementFetched != NULL)
*pcElementFetched = l2;
m_lCurrent = l1;
return (l2 < cElements) ? S_FALSE : NOERROR;
error:
for (l=0; l<cElements; l++)
VariantClear(&pvar[l]);
return hr;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | oaidl.h |