Шаг 229 - CDumpContext

CDumpContext не имеет класса родителя. Он предназначен для вывода диагностической информации при отладке программы. Объект этого класса глобального уровня объвлен в MFC и имеет имя afxDump. Вообще отладочный контекст концептульно похож на поток ceer, а так же на обычный поток, так как можно использовать операции <<. Этот перегруженный оператор умеет выводить переменные в поток вывода отладчика.

void main()
{
	CDumpContext cd;
	cd << "Out debug contectst ";
}

Данный контекст обычно используют для передачи в функции CObject::Dump вывода информации о объекте. CDumpContext умеет выводить информацию о содержании многих классов MFC, например, CString, CTime и часть структур типа CPoint. Давайте посмотрим.

CString s("Hello ");
CPoint cp(23,23);
CDumpContext cd;
cd << s;
cd << cp;
-------------
Hello (23, 23)The thread 0xFFFC0769 has exited with code -2124201428 (0x8163422C).
The program 'E:\PROJECT\TestObject\Debug\TestObject.exe' has exited with code -2124201428 (0x8163422C).

Если Вы хотите использовать свой класс для вывода информации, то Вы должны породить его от CObject и перегрузить функцию Dump. Итак, выводить информацию в отладочный контекст можно двумя способами.

  1. Используя Dump функцию для классов порожденных от CObject
  2. Используя перегруженный оператор << для MFC классов не порождленных от CObject.

Отладочный контекст определен только в Debug версии, поэтому весь код связанный с контекстом необходимо отделять #ifdef _DEBUG .. #endif инструкциями. Вы можете определить свой отладочный контекст используя класс CFile. Давайте посмотрим ???

CFile dumpFile("discardme.txt",CFile::modeCreate | CFile::modeWrite);
if( !dumpFile )
{
	afxDump << "File not create";
}
else
{
	CString s("Hello file Dump ");
	CDumpContext cd(&dumpFile);
	cd << s;
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.