CDumpContext
这是一个MFC类。
这个类包含一个重载的插入操作符函数(<<),这个函数可用来向调试器输出窗口或文件输出调试信息。
用法示例:
CDumpContext dc;
dc<<"begin initialization...";
dc<<"...";
<< 操作符重载函数最终调用CDumpContext的OutputString方法,后者决定是否应该将信息输出,并决定将信息输出到哪里:
void CDumpContext::OutputString(LPCTSTR lpsz)
{
#ifndef _DEBUG
// all CDumpContext output is controlled by afxTraceEnabled
if (!afxTraceEnabled)
return;
#endif
// use C-runtime/OutputDebugString when m_pFile is NULL
if (m_pFile == NULL)
{
AfxOutputDebugString(lpsz);
return;
}
这个函数的代码说明以下信息:
1,仅在调试版本及afxTraceEnabled变量为真的情况下对<<的调用才起作用;
2,如果m_pFile指向一个有效的CFile实例,那么调试信息将输出到对应的文件;
3,调试信息最终通过AfxOutputDebugString全局函数输出。
afxDump
afxDump是MFC预先定义的一个CDumpContext类型的全局变量。
用法示例:
afxDump<<"...";
CObject::Dump
这是一个它接收一个CDumpContext类型对象实例(通常是afxDump)的虚函数。CObject的派生类通过重写该函数可实现输出其诊断信息。
用法示例:
void CPerson::Dump(CDumpContext& dc)
{
__super::Dump(dc);
dc<<m_strName;
m_obj.Dump(dc);
}
AfxDump
AfxDump是MFC预先定义的一个全局函数。这个函数用于输出诊断信息。该函数接收一个CObject类型的参数,函数的实现是调用接收的CObject 类型实例的Dump方法。
要输出诊断信息,MFC不建议用户使用AfxDump函数,而应该直接调用CObject 类型实例的Dump方法。