Шаг 35.
Visual Prolog.
Обработчики событий

    На этом шаге мы рассмотрим обработчики событий.

    С каждым окном и диалоговым окном связан предикат, который обрабатывает все события для этого окна. Он объявляется принадлежащим домену ehandler и принимает два входных параметра: дескриптор окна и событие. Предикат возвращает параметр long значение которого используется только в нескольких случаях. Типовой обработчик событий может выглядеть так:

   predicates
      mywin_event_handler:ehandler
   clauses
      mywin event_handler(Window,e_Create(CreationData),0):-

    Предикат обработчика событий для каждого окна должен быть объявлен и создан экспертом окон и диалоговых окон. Для событий, которые явно должны обрабатываться вашим приложением, нужно самостоятельно написать код обработчика. Если предикат обработчика событий для этого события завершится неуспешно, то VPI выполнит действия по умолчанию для соответствующего события. Если предикат выполнится успешно, VPI не будет производить никаких дополнительных действий. Например, событие e_CloseRequest будет послано после того, как пользователь дважды щелкнет мышью по кнопке закрытия окна. Если никакое предложение не обрабатывает это событие, то стандартный обработчик по умолчанию закроет окно. Если существует предложение, обрабатывающее это событие e_CloseRequest, то программист может решить оставить окно открытым. Для этого он должен обеспечить успешное завершение этого предложения предиката обработчика ошибок, или закрыть окно в результате его неуспешного завершения, или при помощи вызова предиката win_Destroy.


    Замечание: Если обработчик не обрабатывает событие или предложение обработчика для этого события завершается неуспешно, то VPI выполнит действие по умолчанию для соответствующего события. Если предложение обработчика выполнится успешно, VPI не будет производить никаких дополнительных действий.

Возвращаемые значения обработчика событий

    Если значение возвращаемого параметра предиката обработчика событий не важно, оно должно быть установлено в нуль. Так обстоит дело для большинства событий. Однако существуют случаи, в которых оно имеет специальное значение, а именно:

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




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