Уроки Iczelion'а




Урок 32. Создание MDI-приложения


Этот туториал расскажет, как создать MDI-приложение. Это не так сложно.

Скачайте пример.

Теория:

Мультидокументный нтерфейс - это спецификация для приложений, которые обрабатывают несколько документов в одно и то же время. Вы знакомы с Noteрad'оам: это пример однодокументного интерфейса (SDI). Noteрad может обрабатывать только один документ за раз. Если вы хотите открыть другой документ, вам нужно закрыть предыдущий. Как вы можете себе представить, это довольно неудобно. Сравните его с Microsoft Word: тот может держать открытыми различные документы в одно и то же время и позволяет пользователю выбирать, какой документ использовать.

У MDI-приложений есть несколько характеристик, присущих только им. Я перечислю некоторые из них:

  • Внутри основного окна может быть несколько дочерних окон в пределах клиентской области.
  • Когда вы сворачиваете окно, он сворачивается к нижнему левому углу клиентской области основного окна.
  • Когда вы разворачиваете окно, его заголовок сливается с заголовком главного окна.
  • Вы можете закрыть дочернее окно, нажав Ctrl+F4 и переключатся между дочерними окнами, нажав на Ctrl+Tab.

Главное окно, которое содержит дочерние окно называется фреймовым окном. Его клиентская область - это место, где находятся дочерние окна, поэтому оно и называется фреймовым (на английском 'frame' означает "рамка, рама"). Его работа чуть более сложна, чем задачи обычного окна, так как оно обеспечивает работу MDI.

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

Фреймовое окно | Клиентское окно | | | | | | MDI Child 1 MDI Child 2 MDI Child 3 MDI Child 4 MDI Child n

Рисунок 1. Иерархия MDI-приложения

Создание фреймового окна

Теперь мы переключим наше внимание на детали. Прежде всего вам нужно создать фремовое окно. Оно создается примерно таким же образом, как и обычное окно: с помощью вызова CreateWindowEx. Есть два основных отличия от создания обычного окна.




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