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;
}