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



         

Механизм записи и восстановления объектов


Рассмотрим предлагаемую MFC модель обмена данными между документом и файлом, в котором этот процесс идет через промежуточный объект-архив класса CArchive библиотеки MFC. Этот объект передается методу Serialize класса документа как параметр. Поэтому программист посылает данные не в файл, а в архив и читает из архива.

Метод Serialize класса документа вызывается объектами-архивами, когда приложение при необходимости читает или записывает состояние этого документа, вызывая методы CArchive::ReadObject и CArchive::WriteObject для объекта-архива. При этом методу Serialize передается ссылка на объект-архив, который и вызывает методы чтения или записи.

Из архива данные передаются в файл или читаются из файла. Объект-архив всегда связан с файлом (объектом класса CFile). Диалог при открытии и сохранении документа позволяет задать имя физического файла, хранящего данные документа. Затем создается объект класса CFile, который связывается с объектом архивом. Заметим, что создаваемый автоматически объект-архив существует на время выполнения только одной операции - чтения документа или записи документа, после чего разрушается.

Рассмотрим процесс записи и восстановления документа для однооконного или многооконного приложения, создаваемого средством AppWizard. При выборе команд Open, Save, SaveAs каркас приложения:

  • Выводит соответствующее диалоговое окно для получения имени файла от пользователя.
  • Открывает файл, указанный пользователем, как объект класса CFile. Создает объект-архив класса CArchive, связывая его с объектом файлом. Объект-архив получает статус "store" или "load", в зависимости от того, будет ли данные документа записываться или восстанавливаться из архива.
  • Вызывает метод Serialize, определенный в классе документа приложения, производном от класса CDocument, используя методы WriteObject или ReadObject для объекта-архива.
  • Определенный разработчиком приложения метод Serialize класса документа запишет значения переменных документа в архив.


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