Шаг 44 - Знакомимся с MFC Tracer

Создание проекта

Воспользуемся проектом из предыдущего шага.

Описание

MFC Tracer инструмент позволяющий программисту управлять выводом в окно Debug используя установку флагов в AFC.INI. Эти флаги управляют типом сообщений, которые выводятся в окно отладки. Для начала работы необходимо открыть проект и запустить MFC Tracer это можно сделать здесь.

44_1.gif (3533 b)

У Вас появится окно, в котором Вы можете установить тип сообщений выводящихся в окно отладки.

44_2.gif (3533 b)

Нам надо установить разрешение трассировки Enable tracing и тип сообщений в данный момент, сообщения команды от элементов управления WM_COMMAND. Теперь давайте посмотрим, что будет происходить при запуске программы с нажатием на кнопку OK, но для этого необходимо запустить проект в отладочном варианте. Вот так.

44_3.gif (3247 b)

В окне отладки Debug вы должны увидеть что-то вроде этого.

...........
Loaded 'D:\WINNT\system32\MSIDLE.DLL', no matching symbolic information found.
SENDING command id 0x0001 to CDialog target.
The thread 0x92 has exited with code 0 (0x0).
The program 'D:\project\testdia\Debug\testdia.exe' has exited with code 0 (0x0).

Обратите внимание на выделенную строку. Это и есть команда по нажатию кнопки OK. Как узнать это. При нажатии на кнопку вырабатывается событие IDOK. Для отладки такие подробности в общих чертах надо знать. Для того чтобы в этом убедиться введите в тест следующую строку.

//IDOK

Наведите на неё курсор, нажмите правую кнопку мыши. Выберите пункт меню Goto to Defined IDOK вы окажетесь в файле WINUSER.H, где и определено это событие. Вот так.

44_4.gif (3247 b)

.........
/*
*
Dialog Box Command IDs
*/
#define IDOK 1
..........

Очень хорошо. Но данный инструмент позволяет, и отслеживать все сообщения, которые появляются в ходе выполнения программы, тем самым изучить многие тонкости работы MFC.

Установите флаг Main Message dispath в MFC Trace Options, как устанавливали WM_COMMAND. Запускайте (F5). Теперь у Вас будет намного больше сообщений, но каких ! Вот отрывок из результата. WM_INITDIALOG мы обрабатываем в OnInitDialog. Но сколько не обрабатываем. Вы видите? Это самое сердце работы MFC. Это пульс программы.

WndProc: hwnd=0xD016A, msg = WM_GETMINMAXINFO (0x0000, 0x0012FC50)
WndProc: hwnd=0xD016A, msg = WM_NCCREATE (0x0000, 0x0012FC40)
WndProc: hwnd=0xD016A, msg = WM_NCCALCSIZE (0x0000, 0x0012FC70)
WndProc: hwnd=0xD016A, msg = WM_CREATE (0x0000, 0x0012FC40)
WndProc: hwnd=0xD016A, msg = WM_SETFONT (0x6A0A0416, 0x00000000)
WndProc: hwnd=0xD016A, msg = WM_INITDIALOG (0x50168, 0x00000000)
WndProc: hwnd=0xD016A, msg = WM_WINDOWPOSCHANGING (0x0000, 0x0012FAE8)
WndProc: hwnd=0xD016A, msg = WM_WINDOWPOSCHANGED (0x0000, 0x0012FAE8)

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