IEnumVARIANT::Next 메서드(oaidl.h)

열거형 시퀀스에서 지정된 항목을 검색합니다.

구문

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

매개 변수

[in] celt

검색할 요소 수

[out] rgVar

요소를 반환할 최소 크기의 셀트 배열입니다.

[out] pCeltFetched

rgVar 또는 NULL로 반환된 요소 수입니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
반환된 요소의 수는 celt입니다.
S_FALSE
반환되는 요소 수가 셀트보다 작습니다.

설명

요청된 요소 수보다 적은 수의 요소가 시퀀스에 남아 있으면 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