IEnumVARIANT::Next メソッド (oaidl.h)
列挙シーケンス内の指定された項目を取得します。
構文
HRESULT Next(
[in] ULONG celt,
[out] VARIANT *rgVar,
[out] ULONG *pCeltFetched
);
パラメーター
[in] celt
取得する要素の数
[out] rgVar
要素が返される少なくともサイズの セルの 配列。
[out] pCeltFetched
rgVar または NULL で返される要素の数。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
返される要素の数は celt です。 |
|
返される要素の数が 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 |