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。 |
備註
如果少於要求的元素數目保留在序列中, Next 只會傳回其餘元素。 pCeltFetched 中會傳回實際的元素數目,除非它是 null。
範例
下列程式代碼會實作 IEnumVariant::Next。 COM 基本概念行範例範例 (Enumvar.cpp) 提供 IEnumVariant 介面的完整實作。
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 |
標頭 | oaidl.h |