На этом шаге мы рассмотрим перерисовку окна, события от таймера и динамический обмен данными.
e_Update(Rct)
При получении этого события окно должно быть перерисовано. Прямоугольник Rct определяет координаты той части вашего окна, которая должна быть перерисована. Часто проще перерисовать целое окно, чем выяснять, что нужно перерисовать в той части окна, которая нуждается в обновлении. Система управления окнами устанавливает область отсечения так, что независимо от того, что вы рисовали, фактически будет обновляться только реально недостоверная область:
my_window_event_handler(Window,e_Update(ClipRct),0):-!, % Получение клиентской области ClientRCT=win_GetClientRect(Window), ClientRCT=rct(Wl,Wt,Wr,Wb), : %здесь должен быть код для перерисовки :
Предикат win_Invalidate вызывает появление события e_Update.
e_Timer(long TimerId)
После вызова:
TimerId=timer_Set(Window,Interval)
событие e_Timer будет посылаться обработчику событий для окна Window через интервал времени Interval миллисекунд до тех пор, пока не будет вызван предикат timer_Kill (TimerId). С помощью параметра TimerId можно различать несколько таймеров между собой.
e_User(LONG Id,LONG Ptr)
Это событие e_User позволяет расширить домен событий для приложения.
e_DDE(dde_conv Conv,dde_event Event)
При выполнении динамического обмена данных (DDE, Dynamic Data Exchange) в операционной системе MS Windows обработчик событий окна Task автоматически получает все события e_DDE. Параметр dde_Conv Conv - это идентификатор продолжающегося отдельного сеанса связи, a dde_event Event - субструктура, которая в дальнейшем определит событие.
На следующем шаге мы рассмотрим события уведомления от элементов управления.