IEnumVARIANT::Metode berikutnya (oaidl.h)

Mengambil item yang ditentukan dalam urutan enumerasi.

Sintaks

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

Parameter

[in] celt

Jumlah elemen yang akan diambil

[out] rgVar

Array dengan setidaknya ukuran celt di mana elemen akan dikembalikan.

[out] pCeltFetched

Jumlah elemen yang dikembalikan dalam rgVar, atau NULL.

Nilai kembali

Metode ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Jumlah elemen yang dikembalikan adalah celt.
S_FALSE
Jumlah elemen yang dikembalikan kurang dari celt.

Keterangan

Jika kurang dari jumlah elemen yang diminta tetap dalam urutan, Berikutnya hanya mengembalikan elemen yang tersisa. Jumlah elemen aktual dikembalikan dalam pCeltFetched, kecuali jika null.

Contoh

Kode berikut mengimplementasikan IEnumVariant::Next. Contoh lengkap implementasi antarmuka IEnumVariant tersedia dalam sampel 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;
}

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header oaidl.h

Lihat juga

IEnumVARIANT