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



         

Класс документа - часть 2


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

Вместе с конструктором класса CSingleDoc, создается деструктор ~CSingleDoc. Деструктор не содержит кода и представляет собой такую же заготовку, как и конструктор.

Методы OnNewDocument и Serialize. В классе CSingleDoc переопределены два виртуальных метода: OnNewDocument и Serialize. Виртуальный метод OnNewDocument определен в классе CDocument, от которого непосредственно наследуется класс CSingleDoc. А вот виртуальный метод Serialize определен в классе CObject. Цепочка наследования в этом случае длиннее.

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

Если создание нового документа прошло успешно, метод OnNewDocument должен вернуть значение TRUE, в противном случае - FALSE. Когда вызывается метод OnNewDocument базового класса, следует выполнять проверку возвращаемого им значения. Если это значение равно FALSE, значит создание документа на уровне класса CDocument не прошло и следует прекратить дальнейшие действия.

Большой интерес представляет метод Serialize. Он вызывается в тех случаях, когда нужно загрузить документ из файла на диске или, наоборот, записать его в файл. Метод Serialize вызывается, когда пользователь выбирает из меню File строки Open или Save.

В качестве параметра методу Serialize передается указатель на объект класса СArchive, связанный с файлом, в который надо записать или из которого надо прочитать документ.

Метод Serialize вызывается и для загрузки и для сохранения документа. Чтобы узнать, что надо делать с документом , используется метод IsStoring класса CArchive .Если он возвращает ненулевое значение, значит, необходимо сохранить состояние документа в файле. В противном случае нужно считать документ из файла.

Методы AssertValid и Dump. Класс CSingleDoc содержит переопределения еще двух виртуальных методов: AssertValid и Dump, входящих в базовый класс CObject.

Следует обратить внимание на то, что описание этих методов и их определение находится в блоке #ifdef _DEBUG. Поэтому эти методы используются только для отладочной версии приложения. При окончательном построении приложения эти методы не переопределяются.




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