Визуальное программирование и MFC



         

Создание нового документа


Когда пользователь выбирает из меню File строки New, вызывается виртуальный метод OnNewDocument, определенный в базовом классе CDocument. Если этот метод не переопределяется, то по умолчанию он вызывает метод DeleteContents и далее помечает документ как чистый (пустой).

Можно переопределить метод OnNewDocument в наследуемом классе документа, чтобы выполнить его инициализацию (инициализацию его переменных, выделение при необходимости памяти). При этом требуется из переопределенного метода OnNewDocument сначала вызвать метод OnNewDocument, определенный в базовом классе.

BOOL CDoc::OnNewDocument() { // Вызов метода базового класса if (!CDocument::OnNewDocument()) return FALSE;

// Подготовка документа – инициализацию его переменных, // выделение при необходимости памяти для хранения данных ………

return TRUE; }

Когда пользователь создает новый документ в приложении, построенном на основе однооконного интерфейса, то на самом деле используется старый документ. Новый объект класса, представляющего документ, не создается. Метод OnNewDocument должен удалить содержимое документа и выполнить повторную инициализацию существующего объекта класса документа.

Из этого следует, что нельзя выполнять инициализацию документа в конструкторе класса документа, так как конструктор будет вызван только один раз за время работы приложения. Более правильно использовать для цели метод OnNewDocument.

Если в наследуемом классе документа переопределить метод DeleteContents, то метод OnNewDocument базового класса CDocument, будет вызывать метод DeleteContents, определенный в наследуемом классе. Переопределенный метод DeleteContents обычно имеет следущий вид:

void CDoc::DeleteContents() { // Очистка документа – освобождение памяти, // выделенной для хранения данных ……

// Вызов метода базового класса CDocument::DeleteContents(); }

Теперь в приложении при выборе из меню File строки New содержимое окна просмотра и документа обновляется. Приложение готово, например, выводить на экран новое изображение, создаваемое пользователем.




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