IEnumVARIANT::Next

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

rgVar の が指すしようと、列挙体シーケンス内の次の celt アイテムを取得し、配列からそれらを返します。

HRESULT Next( 
  unsigned long  celt,              
  VARIANT FAR*  rgVar,              
  unsigned long FAR*  pCeltFetched  
);

パラメーター

  • celt
    返される要素の数。

  • rgVar
    配列の要素が返されるで celt 少なくともサイズします。

  • pCeltFetched
    rgVar、または Null 値で返される要素数へのポインター。

戻り値

返された HRESULT から取得される戻り値は、次のいずれかになります。

戻り値

説明

S_OK

返される要素数が celt です。

S_FALSE

返される要素数が celt の 未満です。

[コメント]

少ない場合は、要求された要素数、順序のままに、次へ] を 残りの要素だけを返します。 実際の要素数は null でない限りにで pCeltFetched、返されます。

使用例

次のコードは、 **IEnumVariant::Next 実装します。**IEnumVariant インターフェイスの実装、完全な例は、COM の基本線サンプル (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;
}

参照

参照

IEnumVARIANT インターフェイス