Partilhar via


IDebugDocumentContext2::EnumCodeContexts

Recupera uma lista de todos os contextos de código associado a este contexto do documento.

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

Parâmetros

Valor de retorno

Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro.

Comentários

Um contexto de documento único pode gerar vários contextos de código quando o documento está usando modelos ou incluir arquivos.

Exemplo

O exemplo a seguir mostra como implementar este método para um simples CDebugContext objeto que expõe a IDebugDocumentContext2 interface.

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

Consulte também

Referência

IDebugDocumentContext2

IEnumDebugCodeContexts2