IDebugDocumentContext2::EnumCodeContexts
擷取一份與這個文件內容相關聯的所有程式碼內容。
HRESULT EnumCodeContexts(
IEnumDebugCodeContexts2** ppEnumCodeCxts
);
int EnumCodeContexts(
out IEnumDebugCodeContexts2 ppEnumCodeCxts
);
參數
- ppEnumCodeCxts
[] out傳回IEnumDebugCodeContexts2物件,其中包含的程式碼內容的清單。
傳回值
如果成功的話,會傳回S_OK。 否則,會傳回錯誤碼。
備註
單一文件內容可以產生多個程式碼內容,當文件使用範本,或包含檔案。
範例
下列範例會示範如何實作這個方法,如CDebugContext物件,公開 (expose) 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;
}