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


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



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

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

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

    • Return type: bool,

    • Function name: ReadErrors.

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

  4. В поле 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), которых еще нет. Это является типичной практикой разработки многомодульных приложений. Мы определяем прототипы функций так, как того требует логика алгоритма, а тела будут созданы позже.


Начало  Назад  Вперед