IDebugDocumentContext2::EnumCodeContexts
Načte seznam všech kontextů kódu přidružených k tomuto kontextu dokumentu.
Syntaxe
Parametry
ppEnumCodeCxts
\
Vrácená hodnota
V případě úspěchu vrátí hodnotu S_OK
; v opačném případě vrátí kód chyby.
Poznámky
Jeden kontext dokumentu může generovat více kontextů kódu, když dokument používá šablony nebo zahrnout soubory.
Příklad
Následující příklad ukazuje, jak implementovat tuto metodu pro jednoduchý CDebugContext
objekt, který zveřejňuje IDebugDocumentContext2 rozhraní.
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;
}