Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скомпанованное пособие.docx
Скачиваний:
1
Добавлен:
07.05.2019
Размер:
3.3 Mб
Скачать

4.2 Создание остова приложения

Остов приложения создается в диалоге с пользователем инструментальным средством AppWizard визуальной среды проектирования Visual C++, называемом мастером приложений.

Мастер AppWizard предоставляет пользователю последовательность диалоговых окон для выяснения типа и характеристик проекта, а затем сам определяет, какие классы из библиотеки MFC надо включить в проект, чтобы создать остовы всех нужных производных классов для получения необходимых файлов стартового приложения. Стартовое приложение является законченным приложением и обладает некоторыми разумными функциональными свойствами, общими для целого класса приложений. Это приложение можно транслировать, исполнять в режиме отладки и запускать на работу. На этом заканчивается первый этап проектирования приложения.

Для приобретения необходимых навыков по созданию остовов приложений следует выполнить задания 4.6 – 4.14 .

4.3 Создание приложения с диалоговым интерфейсом

Требуется разработать приветствие – диалог между двумя субъектами: пользователем и компьютером. Пользователь You здоровается с компьютером. На первые два приветствия компьютер не отвечает. После третьей попытки он советует никогда не разговаривать с неизвестными и предлагает представиться. Пользователь называет себя, и компьютер любезно здоровается с ним.

Для реализации сценария приветствия необходимо использовать диалоговое окно с двумя командными кнопками: ”Вы” и ”Компьютер”, соответствующие объектам – участникам диалога. Объекты должны иметь окна редактирования, где будет появляться текст диалога.

Пользователь инициирует диалог щелчком той или иной командной кнопки.

Программа, реагируя на события, вызванные действиями пользователя, выдает соответствующие реплики в окнах редактирования. На определенном этапе диалога пользователь сможет ввести свое имя в окно редактирования.

Для приобретения необходимых навыков по разработке приложений с диалоговым интерфейсом следует выполнить задания 4.15 – 4.17 .

4.4 Создание приложения с однодокументным интерфейсом

Центральными объектами в архитектуре документ-вид являются документы, которыми могут быть тексты, таблицы, карты, мелодии, сцены и т.д. Они ориентированы на хранение информации и имеют хорошо развитые методы загрузки, сохранения и управления данными. Документы создаются как объекты классов, производных от класса CDocument библиотеки классов MFC.

Каждый документ сопровождается одним или несколькими объектами, которые определяют вид или облик этого документа на экране. Через облики происходит взаимодействие пользователя с документами. Облик является объектом, предназначенным для отображения документа на экране и распознавания команд пользователя по управлению документом. Для изменения документа облики используют методы документа. Облики создаются как объекты классов, производных от классов CView библиотеки классов MFC. Кроме класса CView, библиотека MFC содержит ряд классов, производных от CView, которые также можно применять для создания новых классов обликов, например, класс CFormView.

Каждый облик должен быть сопоставлен некоторому документу. Один документ может иметь несколько обликов и в таком случае эти облики как правило обеспечивают различное представление документа на экране: в виде таблицы, в виде графика, в виде диаграммы и т.д.

Создание документов и обликов производится каркасом приложения на основе документных шаблонов, являющихся объектами класса CDocTemplate или производных от него классов. Документы-шаблоны задают описание наиболее существенной части архитектуры документ-вид, включая описание класса документа, класса облика документа и класса окна-рамки документа. Документные шаблоны бывают двух типов: для однодокументного интерфейса SDI и многодокументного MDI.

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

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

После создания документа создается объект главное окно-рамка, которое управляет главным Windows-окном приложения. Внутри этого окна располагаются окна-рамки документов. Объект окно-рамка документа создается главным окном-рамкой и служит для управления Windows окном, внутри которого облик отображает содержимое документа. Окно-рамка документа как раз и создает объект-облик. Если открывается уже существующий документ, то для его загрузки используется метод Serialize.Этот же метод используется для сохранения документа при его закрытии.

Заключительный этап создания документа и связанных с ним объектов включает инициализацию облика и отображение содержимого документа посредством этого облика.

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

Метод класса CView позволяет облику получать документ, за которым он закреплен:

CDocument * GetDocument ( ) const;

Этот документ возвращает NULL,если облик не закреплен ни за каким документом.

Если документ использует несколько обликов, один из которых изменяет этот документ, то остальные облики должны синхронизировать своё отображение с изменяемым содержанием этого документа. Такую синхронизацию обеспечивают методы UpdateAllView класса CDocument и OnUpdate класса CView:

void UpdateAllViews(CView* pSender, LPARAM lHint=0L, CObject* pHint=NULL);

virtual void OnUpdate(CView* pSender, lPARAM lHint, CObject* pHint);

Здесь pSenderуказатель отправителя сообщения Update;

lHintчисловой параметр сообщения;

pHint – параметр-объект сообщения.

Для приобретения необходимых навыков по разработке приложений с однодокументным интерфейсом следует выполнить задание 4.18 .