Partager via


Méthode IEnumVARIANT ::Clone (oaidl.h)

Crée une copie de l’état actuel de l’énumération.

Syntaxe

HRESULT Clone(
  [out] IEnumVARIANT **ppEnum
);

Paramètres

[out] ppEnum

Énumérateur clone.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
Réussite.
E_OUTOFMEMORY
Mémoire insuffisante pour terminer l’opération.

Remarques

À l’aide de cette fonction, un point particulier de la séquence d’énumération peut être enregistré, puis retourné ultérieurement. L’énumérateur retourné est de la même interface réelle que celle qui est clonée.

Il n’est pas garanti que le même ensemble de variantes sera énuméré la deuxième fois que la première. Bien qu’un doublon exact soit souhaitable, le résultat dépend de la collection énumérée. Vous constaterez peut-être qu’il n’est pas pratique pour certaines collections de conserver cette condition (par exemple, une énumération des fichiers dans un répertoire).

Exemples

Le code suivant implémente IEnumVariant ::Clone. Un exemple d’implémentation complet de l’interface IEnumVariant est disponible dans l’exemple LIGNES DE BASE COM (Enumvar.cpp).

STDMETHODIMP
CEnumVariant::Clone(IEnumVARIANT ** ppenum)
{
   CEnumVariant * penum = NULL;
   HRESULT hr;

   if (ppenum == NULL)
      return E_INVALIDARG;

   *ppenum = NULL;

   hr = CEnumVariant::Create(m_psa, m_cElements, &penum);
   if (FAILED(hr))
      goto error;
   penum->AddRef();
   penum->m_lCurrent = m_lCurrent;

   *ppenum = penum;
   return NOERROR;

error:
   if (penum)
      penum->Release();
   return hr;
}

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête oaidl.h

Voir aussi

IEnumVARIANT