共用方式為


IEnumVARIANT::Next 方法 (oaidl.h)

擷取列舉序列中的指定專案。

語法

HRESULT Next(
  [in]  ULONG   celt,
  [out] VARIANT *rgVar,
  [out] ULONG   *pCeltFetched
);

參數

[in] celt

要擷取的項目數目

[out] rgVar

至少要傳回元素大小的 celt 陣列。

[out] pCeltFetched

在 rgVar 或 NULL 中傳回的項目數目。

傳回值

這個方法可以傳回其中一個值。

傳回碼 描述
S_OK
傳回的項目數目為 celt
S_FALSE
傳回的項目數目小於 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

另請參閱

IEnumVARIANT