Учебник по Visual C++ .Net



   Финансовая грамотность            

Приложение на основе диалога Уверен - часть 2


/p>

Символы имеют следующий смысл:

  • с — Customer code flag (флаг пользователя);

  • R — Reserved (зарезервировано для будущего использования);

  • s — Severity (Успех или неудача);

  • Rl, Cl, N, г — зарезервированная часть кода Facility.

    Два старших бита Win32-oum6oK кодируют такие категории степени ошибки:

  • 00 —Success (Успех);

  • 01 — Informational (Информационное сообщение);

  • 10 — Warning (Предупреждение);

  • 11 — Error (Отказ).

    Зададимся целью разработать приложение, которое можно назвать анализатором кодов ошибок. С его помощью пользователь, зная код ошибки, сможет быстро получить всю информацию, которая хранится в файле WinError.h и связана именно с этой ошибкой. На примере разработки приложения мы продемонстрируем такие технологические приемы, как:

  • создание приложения на основе диалога;

  • работа с текстовыми строками и потоками ввода-вывода, определенными в STL (Standard Template Library);

  • использование стандартного диалога по поиску папки; О поиск в реестре Windows.

    Основная идея приложения заключается в том, что при его открытии происходит попытка с помощью реестра найти файл WinError.h, сканировать его и заполнить динамический контейнер структур с информацией обо всех ошибках. Далее пользователь имеет возможность либо просматривать информацию об ошибках, последовательно проходя по элементам контейнера, либо ввести код ошибки и увидеть результат его трансляции (расшифровки). Форматы битовых полей HRESULT подсказывают состав полей структуры, которую можно использовать для хранения информации об ошибке:

    //====== Тип стуктур для описания ошибок

    struct ErrorType

    {

    string Code;

    // Код ошибки string Identifier;

    // Ее идентификатор string Message;

    // Текстовое описание

    //======= Конструктор с параметрами

    ErrorType(string с, string i, string m)

    {

    Code = c;

    Identifier = i;

    Message = m;

    }

    };

    Так как мы собираемся использовать контейнер структур такого типа, то полезно определить новый тип:

    typedef vector<ErrorType> ERROR_VECTOR;




    Содержание  Назад  Вперед