Share via


IEnumVARIANT::Next

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

IEnumVARIANT

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.