Freigeben über


IDebugDocumentContext2::EnumCodeContexts

Ruft eine Liste aller Code kontexte ab, die diesem Dokumentenkontext zugeordnet sind.

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

Parameter

Rückgabewert

Bei Erfolg gibt S_OKzurück. andernfalls gibt einen Fehlercode zurück.

Hinweise

Ein Kontext des Einzelbelegs kann mehrere kontexte Code generieren, wenn das Dokument Vorlagen oder Includedateien verwendet.

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie diese Methode für ein einfaches CDebugContext-Objekt implementiert, das die IDebugDocumentContext2-Schnittstelle verfügbar macht.

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

Siehe auch

Referenz

IDebugDocumentContext2

IEnumDebugCodeContexts2