IEnumVARIANT::Next 메서드(oaidl.h)
열거형 시퀀스에서 지정된 항목을 검색합니다.
구문
HRESULT Next(
[in] ULONG celt,
[out] VARIANT *rgVar,
[out] ULONG *pCeltFetched
);
매개 변수
[in] celt
검색할 요소 수
[out] rgVar
요소를 반환할 최소 크기의 셀트 배열입니다.
[out] pCeltFetched
rgVar 또는 NULL로 반환된 요소 수입니다.
반환 값
이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
반환된 요소의 수는 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 |