次の方法で共有


IEnumVARIANT::Next メソッド (oaidl.h)

列挙シーケンス内の指定された項目を取得します。

構文

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

パラメーター

[in] celt

取得する要素の数

[out] rgVar

要素が返される少なくともサイズの セルの 配列。

[out] pCeltFetched

rgVar または NULL で返される要素の数。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
返される要素の数は celt です。
S_FALSE
返される要素の数が celt 未満です。

注釈

シーケンス内に残っている要素の数が要求された数より少ない場合、 Next は残りの要素のみを返します。 要素の実際の数は、null でない限り、 pCeltFetched で返されます。

次のコードは 、IEnumVariant::Next を実装します。 IEnumVariant インターフェイスの完全な実装例については、COM Fundamentals Lines サンプル (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;
}

要件

要件
対象プラットフォーム Windows
ヘッダー oaidl.h

こちらもご覧ください

IEnumVARIANT