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



         

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


Так как документы и их облики являются одними из наиболее важных составляющих архитектуры Document-View, их создание выполняется каркасом приложения. Процесс создания довольно сложен, остановимся на наиболее существенных моментах.

Первый связан со специальными объектами - документными шаблонами (document template). Принадлежа классу CDocTemplate (класс "Документный шаблон") или производным от него классам, они задают описание наиболее существенной части архитектуры, включая описание наиболее существенной части архитектуры Document-View, включая описание класса документа, класса облика документа и класса окна-рамки документа. Документные шаблоны бывают двух видов: для однодокументного интерфейса (SDI) и для многодокументного интерфейса (MDI).

Создание документа и связанных с ним объектов выполняется при открытии пользователем документа - существующего или нового. Это происходит в начале работы приложения, а также когда пользователь выбирает команды Open и New в меню File.

Создание начинается с выбора шаблона документа. В соответствии с описанным в шаблоне классом документа создается сам документ. Если шаблон задает MDI-интерфейс, то каждый раз создается новый объект-документ. Если же шаблон задает SDI-интерфейс, новый объект создается только один раз, а при выборе пользователем команд Open и New производится только "обнуление" имеющегося объекта документа.

Для инициализации созданного документа каркас приложения вызывает метод OnNewDocument при открытии нового документа, а при открытии уже имеющегося - OnOpenDocument. Оба метода принадлежат базовому классу CDocument. Они являются виртуальными, и поэтому, переопределив их, программист может задать необходимые действия по инициализации документа. Однако, эти методы и сами по себе выполняют ряд действий, связанных с инициализацией, - в частности, проверяют, что объект-документ пуст. Переопределенный метод заменяет метод базового класса, поэтому нужно предусмотреть вызов в нем метода базового класса. Остовы методов OnNewDocument и OnOpenDocument, созданные AppWizard, содержат такой вызов.




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