Иллюстрированный самоучитель по Visual Studio.Net




Собственные методы класса


Работая с классом, производным от класса MFC, разработчик не только вводит в него реакции на сообщения и переопределяет виртуальные функции. Он также вносит в класс свою собственную функциональность, вводя в него вспомогательные методы (helper functions). Сейчас мы создадим несколько таких функций. Новый метод ReadErrors будет заниматься поиском, чтением и анализом файла WinError.h.

  • Переведите фокус мыши на узел CLookDlg в дереве классов Class View, вызовите контекстное меню и дайте команду Add > Add Function.

  • В окне мастера Add Member Function Wizard заполните следующие поля:

  • Return type: bool,

  • Function name: ReadErrors.

  • В поле Access: задайте тип доступа — public.

  • В поле Comment: введите комментарий Search and read errors (моя версия Studio.Net не позволяет пользоваться русским языком в этом диалоге).

    Просмотрите изменения в классе CLookDlg, которые произвел мастер. Комментарий он помещает в файл заголовков (интерфейс класса). Введите следующий код в тело новой функции:

    bool CLookDlg: :ReadErrors ()

    {

    //==== Поиск и чтение информации об ошибках

    //==== Пытаемся найти путь в реестре

    string sPath = GetPathFromRegistry ( ) ;

    //==== В случае неудачи пытаемся узнать у пользователя

    if (sPath. empty () )

    sPath = GetPathFromUser О ; if (sPath.emptyO)

    return false; // При отказе уходим

    //==== Пытаемся открыть файл

    if stream is (sPath. c_str () ) ;

    if (!is) {

    MessageBox ("He могу найти WinError.h", "Выход") ;

    return false;

    //====== Последовательно ищем все ошибки

    while (GetNextErrorCode (is) )

    {

    //==== Создаем новый объект типа ErrorType и

    //==== помещаем его в контейнер

    m_Vector.push_back (ErrorType (gCode, gsID, gsMsg) ) ;

    }

    is. closet);

    // Закрываем файл

    //====== Запоминаем размер контейнера

    m_nltems = m_Vector . size () ;

    return bool (m_nltems != 0) ;

    }

    Здесь мы вызываем функции (Getxxx), которых еще нет. Это является типичной практикой разработки многомодульных приложений. Мы определяем прототипы функций так, как того требует логика алгоритма, а тела будут созданы позже.


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