IEnumVARIANT::Next method (oaidl.h)
Retrieves the specified items in the enumeration sequence.
Syntax
HRESULT Next(
[in] ULONG celt,
[out] VARIANT *rgVar,
[out] ULONG *pCeltFetched
);
Parameters
[in] celt
The number of elements to be retrieved
[out] rgVar
An array of at least size celt in which the elements are to be returned.
[out] pCeltFetched
The number of elements returned in rgVar, or NULL.
Return value
This method can return one of these values.
Return code | Description |
---|---|
|
The number of elements returned is celt. |
|
The number of elements returned is less than celt. |
Remarks
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.
Examples
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 * 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;
}
Requirements
Requirement | Value |
---|---|
Target Platform | Windows |
Header | oaidl.h |