Partager via


IDebugDocumentContext2 : : EnumCodeContexts

Extrait une liste de tous les contextes de code associés à ce contexte de document.

HRESULT EnumCodeContexts( 
   IEnumDebugCodeContexts2** ppEnumCodeCxts
);
int EnumCodeContexts( 
   out IEnumDebugCodeContexts2 ppEnumCodeCxts
);

Paramètres

Valeur de retour

En cas de réussite, retourne S_OK; sinon, retourne un code d'erreur.

Notes

Un contexte de document unique peut générer plusieurs contextes de code lorsque le document utilise des modèles ou des fichiers Include.

Exemple

L'exemple suivant indique comment appliquer cette méthode d'un objet simple d' CDebugContext qui expose l'interface d' IDebugDocumentContext2 .

HRESULT CDebugContext::EnumCodeContexts(IEnumDebugCodeContexts2 **ppEnumCodeCxts)  
{  
   HRESULT hr;  
  
   // Check for a valid IEnumDebugCodeContexts2 interface pointer.  
   if (ppEnumCodeCxts)  
   {  
      *ppEnumCodeCxts = NULL;  
  
      // Create a CEnumDebugCodeContexts object.  
      CComObject<CEnumDebugCodeContexts>* pEnum;  
      hr = CComObject<CEnumDebugCodeContexts>::CreateInstance(&pEnum);  
      assert(hr == S_OK);  
      if (hr == S_OK)  
      {  
         // Get an IID_IDebugCodeContext2 interface.  
         CComPtr<IDebugCodeContext2> spCodeCxt;  
         hr = QueryInterface(IID_IDebugCodeContext2,
                             (void**)&spCodeCxt);
         assert(hr == S_OK);  
         if (hr == S_OK)  
         {  
            // Initialize the code context enumerator with the  
            // IDebugCodeContext2 information.
            IDebugCodeContext2* rgpCodeContext[] = { spCodeCxt.p };  
            hr = pEnum->Init(rgpCodeContext,
                             &(rgpCodeContext[1]),
                             NULL,
                             AtlFlagCopy);
            assert(hr == S_OK);  
            if (hr == S_OK)  
            {  
               // Set the passed IEnumDebugCodeContexts2 pointer equal to the pointer
               // value of the created CEnumDebugCodeContexts object.
               hr = pEnum->QueryInterface(ppEnumCodeCxts);  
               assert(hr == S_OK);  
            }  
         }  
  
         // Otherwise, delete the CEnumDebugCodeContexts object.  
         if (FAILED(hr))  
         {  
            delete pEnum;  
         }  
      }  
   }  
   else  
   {  
      hr = E_INVALIDARG;  
   }  
  
   return hr;  
}  

Voir aussi

Référence

IDebugDocumentContext2

IEnumDebugCodeContexts2