На этом шаге мы рассмотрим изменение окон.
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.
Значение | Описание |
---|---|
font (Font) | Вызван предикат win_SetFont |
text (String) | Вызван предикат win_SetText |
disabled() | Окно блокируется вызовом предиката win_SetState |
enabled() | Окно активизируется вызовом предиката win_SetState |
invisible() | Окно скрывается вызовом предиката win_SetState |
visible() | Окно отображается на экране вызовом предиката win_SetState |
На следующем шаге мы рассмотрим события GUI самой ОС и "собственное" рисование.