Анализатор кодов ошибок
Приложение на основе диалога
Уверен, что многие из читателей, разрабатывая свой код или запустив чужой многообещающий код, получали сообщение типа: | 0xC000000S STATUS_ACCESS_VIOLATION | Раньше, во времена DOS, довольно часто можно было видеть сообщение "General Protection Fault" ("Общая ошибка защиты").Дизайн диалога. Управление окном Toolbox.
Развитие диалогового приложения обычно начинают с размещения элементов управления на поверхности его окна – шаблона диалога. Откройте шаблон в окне редактора и включите панель инструментов Dialog Editor, если она еще не включена.Создаем диалог
Важным моментом в этой процедуре является то, что каждый элемент управления должен быть идентифицирован в поле ID окна Properties. Другие свойства можно изменять в других полях этого окна, но большая часть из них уже имеет нужные значения. Только некоторые свойства следует изменить.Реакция окна на уведомляющие сообщения
Наш анализатор кодов ошибок по сути является браузером (инструментом для просмотра) файла WinError.h с особой структурой. Мы хотим дать пользователю возможность выбрать один из двух вариантов просмотра: | последовательный, с помощью счетчика Spin Control или ползунка slider Control,Создание и связывание переменных
Итак, мы ввели в состав класса, управляющего главным окном приложения, способность реагировать на уведомляющие события UDN_DELTAPOS, EN_CHANGE, а также на событие Windows WM_HSCROLL. Теперь пора показать, как с помощью Studio .NET можно создать переменные, способные обмениваться данными с элементами управления (дочерними окнами) диалога.Вставка значка
Если вы вновь посмотрите на окно диалога (рис. 4.1), то увидите справа два элемента типа Picture Control с идентификаторами IDC_RIGHT и IDC_LEFT. Эти элементы необходимо связать с растровыми изображениями значков (ресурсы типа Icon).Диалог About. Внесение логики разработчика.
При нажатии кнопки в области картинок мы вызываем диалог About, от которого отказались при создании проекта. Цель такого поступка – самостоятельно создать диалог, поместить в него растровое изображение и ввести команду для его запуска в меню управления (Control menu) главного окна.Собственные методы класса
Работая с классом, производным от класса MFC, разработчик не только вводит в него реакции на сообщения и переопределяет виртуальные функции. Он также вносит в класс свою собственную функциональность, вводя в него вспомогательные методы (helper functions). Сейчас мы создадим несколько таких функций.Поиск в реестре
Алгоритм поиска в реестре основан на предварительном анализе тех записей, которые внесла в него Studio .NET 7.0. Если параметры вашей установки отличаются от тех, которые использованы здесь, то вам надо провести анализ записей реестра по Ключу: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\VisualStudio\7.0 И найти в них такое поле Value, которое содержит путь к папке со Studio .NET.Синтаксический анализ файла
До сих пор мы исходили из предпосылки, что вся информация об ошибках уже получена и хранится в контейнере структур ERROR_VECTOR m_vector. Контейнер заполняется в функции ReadErrors, которая в цикле вызывает функцию GetNextErrorCode. Пришла пора создать эту функцию.