Шаг 83.
Visual Prolog.
Работа с мышью

    На этом шаге мы рассмотрим работу с мышью.

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

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

Захват мыши

    Когда мышь "захвачена" окном, все события от нее направляются к этому окну; при этом неважно, где находится курсор. В каждый момент времени только одно окно может захватывать мышь. Это свойство может быть использовано, например, в Visual Prolog в редакторе текста для автоматического пролистывания текста, или когда пользователь хочет "перетащить" часть текста в другое место.

   win_CaptureMouse(Window)

    Предикат win_CaptureMouse перенаправляет все события, связанные с мышью, окну Window. Все события e_MouseMove посылаются окну Window во время захвата.

   win_ReleaseMouse()

    Предикат win_ReleaseMouse освобождает мышь после вызова предиката win_CaptureMouse.

События от мыши

    VPI преобразует события, связанные с мышью, в следующие четыре сообщения, не зависящие от операционной системы:

   e_MouseDown(Pnt,Shift_Ctl_Alt_Status,Button) 
   e_MouseUp(Pnt,Shift_Ctl_Alt_Status,Button)
   e_MouseDbl(Pnt,Shift_Ctl_Alt_Status,Button) 
   e_MouseMove(Pnt,Shift_Ctl_Alt_Status,ButtonsList)

    Каждое сообщение имеет три параметра: Pnt, Shift_Ctl_Alt_Status и Button или ButtonsList.

    Константы для определения нажатия кнопки мыши:

   mouse_button_left  % Нажата/освобождена левая кнопка мыши 
   mouse_button_right  % Нажата/освобождена правая кнопка мыши 
   mouse_button_middle  % Нажата/освобождена средняя кнопка мыши

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




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