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
- ppEnumCodeCxts
[out] Retourne un objet d' IEnumDebugCodeContexts2 qui contient une liste des contextes de code.
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;
}