Шаг 33.
Visual Prolog.
Клиентская область окон и различные виды окон

    На этом шаге мы рассмотрим клиентскую область окон и различные виды окон.

Клиентская область окна

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

    Прямоугольные области всегда определяются RCT-структурой:

   rct(Left,Top,Right,Bottom).


    Замечание: VPI использует значения Right (Правый) и Bottom (Дно), но не Width (Ширина) и Height (Высота).

    Для большинства окон координаты выражены в пикселях. Но при работе с диалоговыми окнами и элементами управления размеры должны зависеть от размера шрифта и типа используемого системного шрифта. При изменении системного шрифта изменится и размер текстового элемента управления, а диалоговое окно будет соответственно масштабировано. Поэтому размер диалоговых окон измеряется в диалоговых базовых единицах (Dialog Base Units), чьи метрики зависят от системного шрифта.

Окно экрана (Screen)

    Окно экрана (Screen Window) - абстракция, которая представляет весь экран. Окно Screen всегда является родителем окна Task. Окна верхнего уровня также могут иметь своим родителем окно Screen, которое позволяет перемещать их за пределами окна Task.

Окно задачи (Task)

    Окно задачи (Task Window) - абстракция, которая представляет приложение. На платформах Windows и OS/2 оно может использоваться во многом подобно обычному окну. Окно Task - основное окно для приложения и создается с типом окна w_Task вызовом предиката vpi_Init. Вызов этого предиката генерируется экспертом кода как заключительный вызов в цели (goal) приложения.

    Инициализация и завершение приложения всегда связываются с окном Task. Инициализация должна выполняться в ответ на событие e_Create окна Task. Это событие инициируется автоматически вызовом предиката vp_Init. Очистка при завершении должна выполняться в ответ на событие e_Destroy. Приложение завершается в результате вызова предиката win_Destroy, примененного к окну Task. Одним из способов инициализации является выбор пользователем команды File | Exit. Это действие инициирует событие, приводящее к вызову предиката win_Destroy.

    Окно Task получает некоторые специальные события, которые не посылаются другим окнам. Событие e_EndSession может быть получено от системы управления окнами для уведомления об ее закрытии, различные события динамического обмена данными (DDE, Dynamic Data Exchange) используются для связи с другими приложениями и также посылаются обработчику событий окна Task.

    В режиме интерфейса с множеством документов (MDI, Multiple Document Interface). окно Task является контейнером для всех окон верхнего уровня, созданных приложением. Меню окна Task несет как свое собственное меню, так и меню всех активных MDI-окон. Если приложение запущено в режиме MDI, то в окне Task рисовать невозможно.

Окна верхнего уровня (Top-Level)

    Окно верхнего уровня (Тор-Level) - это окно, у которого родительским окном является либо окно Screen, либо окно Task. Окна верхнего уровня создаются с типом окна w_TopLevel. Эти окна часто содержат меню и обычно могут быть свернуты в пиктограмму или развернуты во весь экран. Они могут использоваться как контейнерные окна и содержать дочерние окна или элементы управления.

    В режиме MDI под Windows меню окон верхнего уровня будет отображаться в окне Task. Однако в режиме интерфейса с одним документом (SDI, Single Document Interface) любое окно верхнего уровня может объявить родительским окно Screen, что позволяет каждому окну верхнего уровня в приложении содержать свое собственное меню.

Дочерние окна

    Дочерние окна (Child) всегда должны находиться внутри области их родительского окна. Дочерние окна создаются с типом окна w_Сhild. При закрытии, сворачивании, деактивизации, скрывании родительского окна подобные операции сначала применяются ко всем дочерним окнам и элементам управления и только затем к самому окну.

    На следующем шаге мы рассмотрим элементы управления и диалоговые окна.




Предыдущий шаг Содержание Следующий шаг