Шаг 50.
Visual Prolog.
Изменение окон

    На этом шаге мы рассмотрим изменение окон.

Изменение положения окна

   e_Move(TopCornerX,TopCornerY)

    Это событие сообщает, что позиция окна была изменена. Верхний левый угол клиентской области окна был перемещен в точку TopCornerX, TopCornerY (в координатах экрана).

    Событие е_ Move может быть вызвано при помощи предиката win_Move.

Изменение размера окна

   e_Size(NewWidth,NewHeight)

    Это событие сообщает, что окно изменило размер. Если сохранить старый размер в базе данных (возможно, вы делали это в событии e_Create), можно определить, было ли окно увеличено или уменьшено. Если окно было уменьшено, то в некоторых случаях его изменять не нужно.

    В ответ на событие e_Size необходимо повторно вычислять размер рисунков, дочерних окон или элементов управления и корректировать их размер и позиции. Например чтобы текст всегда располагался в центре окна, нужно перерисовывать все окно. Для этого надо объявить окно недостоверным, вызвав предикат win_Invalidate, и написать обработчик для события перерисовки, который вычисляет новый центр и перерисовывает окно.

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

Изменение состояния окна

   e_State(StateInfo)

    Событие e_State посылается сразу после изменения состояния окна Task, окна верхнего уровня, дочернего окна или специальных элементов управления. Возможные значения параметра State_Info приведены в таблице 1.

Таблица 1. Значения параметра StateInfo
Значение Описание
font (Font) Вызван предикат win_SetFont
text (String) Вызван предикат win_SetText
disabled() Окно блокируется вызовом предиката win_SetState
enabled() Окно активизируется вызовом предиката win_SetState
invisible() Окно скрывается вызовом предиката win_SetState
visible() Окно отображается на экране вызовом предиката win_SetState

    На следующем шаге мы рассмотрим события GUI самой ОС и "собственное" рисование.




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