КАК применяются технологии SDI и MDI?

В приложениях, разрабатываемых под Windows давно уже действует некоторый стандарт. Если вы пишите приложение на Visual C++, то скорее всего будете использовать однодокументный или многодокументый интерфейс пользователя. Это своего рода шаблон, созданный Microsoft для ускроения разработки приложений.
Однодокументный интерфейс - своего рода джентельменский набор того, что должно иметь уважающее себя главное окно - меню, панель инструментов и строка состояния. Мастер Visual C++ App Wizard (Мастер Приложений) позволяет сгенеировать шаблон такого приложения, где всё это есть по минимуму. То есть вам самим не надо будет беспокоиться о таких вещах, как элементы управления и можно будет вплотную заняться алгоритмом работы приложения.
Вот, как выглдят такое стандартное окно:

Разрабатывая своё приложение на базе такого окна, вы будете добавлять в него новые пункты меню, кнопки панели инструментов, надписи в строку состояния. В конце концов такое окно изменится почти до неузнаваемости. Вот, что получилось у компании Sonic Foundry:

Как продолжение однодокументного интерфейса - многодокументный. Он позволяет размещать в главном окне сразу несколько окон, выполняющих функции всего, что угодно - окна настройки, управляющих окон, графиков, таблиц и диспетчеров файлов. Порождённые окна не имеют права покидать пределы главного окна. Также они не могут отображаться без родительского окна - сами по себе. При перемещении родительского окна по экрану, они перемещаются вместе с ним. В заголовке окна MDI приложения обычно пишется имя активного документа. Кроме того, обратите внимание, что у SDI-приложений нет пункта меню Window ("Окно"), в котором в обязательном порядке должен быть выведен список всех окон и стандартные команды: New Window ("Новое окно"), Cascade ("Расположить каскадом"), Tile ("Растянуть"), Arrange Icons ("Упорядочить значки").

Если документы связаны сежду собой слабо, смысла создавать многооконное приложение нет никакого. Вы можете открыть сколько угодно копий приложения Paint и копировать рисунки из одного в другое. Но если существует реальный обмен данными, то передавать их между приложениями гораздо сложнее, чем внутри одного приложения. Так возникла технология "Документ / Вид" или "Документ / Представление" - ("Document / View"). Начинающим она кажется сложной, но это не так. У любого приложения документ может быть только один. В классе документа хранятся общие данные, с которыми работают все окна. Вид - класс, отвечающий за клиентскую часть окна. Для каждого нового окна вид создаётся свой. Эти же данные конечно можно было бы хранить и в классе вида. Как вы понимаете, данные можно хранить где угодно. Но тогда к ним будет осложнён доступ из других документов.

Оба эти примера - SDI и MDI были сгенеированы мастером App Wizard программы Visual C++. Я не вписал в них ни единой строчки кода!

Вы тоже скорее всего будете пользоваться этими возможностями мастера. Но для того, чтобы грамотно ими пользоваться и лучше понять эту технологию, я предлагая вам познакомиться со строкой состояния и панелью инструментов - основными компонентами этих интерфейсов. С меню мы уже вроде бы знакомы, поэтому дело за немногим. Познакомив вас с SDI и MDI на уровне API-функций я смогу со спокойным сердцем передать вас следующей части моей книги, которая посвящена программированию на MFC.


Назад Главная Вперёд