Windows apps
Collapse the table of content
Expand the table of content

IEnumVARIANT::Next 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  
);

celt

The number of elements to be returned.

rgVar

An array of at least size celt in which the elements are to be returned.

pCeltFetched

Pointer to the number of elements returned in rgVar, or Null.

The return value obtained from the returned HRESULT is one of the following:

Return value

Meaning

S_OK

The number of elements returned is celt.

S_FALSE

The number of elements returned is less than celt.

If fewer than the requested number of elements remain in the sequence, Next returns only the remaining elements. The actual number of elements is returned in pCeltFetched, unless it is null.

The following code implements IEnumVariant::Next. A complete example implementation of the IEnumVariant interface is available in the COM Fundamentals Lines sample (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;

   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;
}
Show:
© 2017 Microsoft