This method attempts to get the next celt items in the enumeration sequence, and return them through the array pointed to by rgVar.
HRESULT Next( unsigned long celt, VARIANT FAR* rgVar, unsigned long FAR* pCeltFetched );
Parameters
- celt
[in] Number of elements to be returned. - rgVar
[out] Array of at least size celt in which the elements are to be returned. - pCeltFetched
[out] Pointer to the number of elements returned in rgVar, or NULL.
Return Values
If the number of elements returned is celt, the return value is S_OK.
If the number of elements returned is less than celt, the return value is S_FALSE.
Remarks
If fewer than the requested number of elements remain in the sequence, Next returns only the remaining elements. The actual number of elements returned is passed through *pCeltFetched, unless it is NULL.
Example
The following code implements Next for collections in the Lines sample file Enumvar.cpp.
STDMETHODIMP
CEnumVariant::Next(ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched)
{
HRESULT hr;
ULONG l;
long l1;
ULONG l2;
if (pcElementFetched != NULL)
*pcElementFetched = 0;
for (l=0; l<cElements; l++)
VariantInit(&pvar[l]);
// Retrieve the next cElements elements.
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) ? ResultFromScode(S_FALSE) : NOERROR;
error:
for (l=0; l<cElements; l++)
VariantClear(&pvar[l]);
return hr;
}
Requirements
OS Versions: Windows CE 2.0 and later.
Header: Oaidl.h, Oaidl.idl.
Link Library: Oleaut32.lib, Uuid.lib.
See Also
Send Feedback on this topic to the authors