Шаг 52.
Visual Prolog.
Перерисовка окна, события от таймера и динамический обмен данными

    На этом шаге мы рассмотрим перерисовку окна, события от таймера и динамический обмен данными.

Перерисовка окна

   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 - субструктура, которая в дальнейшем определит событие.

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




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