А. Полищук - Программирование в X Window средствами Free Pascal

Здесь есть возможность читать онлайн «А. Полищук - Программирование в X Window средствами Free Pascal» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование в X Window средствами Free Pascal: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование в X Window средствами Free Pascal»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Программирование в X Window средствами Free Pascal — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование в X Window средствами Free Pascal», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

PXKeyboardControl = ^TXKeyboardControl;

Первые четыре поля совпадают с аналогичными полями структуры TXKeyboardState. Поля led и led_mode позволяют сообщить серверу, какие из клавиш-модификаторов должны сопровождаться подсветкой. Если поле led не задано, и led_mode равно LedModeOn, то изменяется состояние всех клавиш, для которых поддерживается световое сопровождение. Если led_mode равно LedModeOff, то состояние клавиш не меняется. Если поле led задано, то это есть комбинация флагов, указывающих, для каких клавиш подсветку включить (led_mode равно LedModeOn) или выключить (led_mode равно LedModeOff).

Поля key и auto_repeat_mode определяют, для какой клавиши (клавиш) включить (auto_repeat_mode равно AutoRepeatModeOn) или выключить (auto_repeat_mode равно AutoRepeatModeOff) режим автоматического повтора. Если поле key задано, то автоматический повтор включается или выключается только для клавиши с кодом key.

1.3.2 Мышь

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

Чаще всего приходится обрабатывать события нажатия (отпускания) кнопки мыши. Для регистрации такого типа событий, необходимо добавить одну из следующих масок с помощью функции XSelectInput():

• ButtonPressMask - уведомлять о нажатии любой кнопки в одном из окон программы.

• ButtonReleaseMask - уведомлять об отпускании любой кнопки в одном из окон программы.

В цикле обработки сообщений могут проверяться такие события:

• ButtonPress - нажата кнопка в одном из окон программы.

• ButtonRelease - отпущена кнопка в одном из окон программы.

Структура для этих сообщений получается доступом к полю xbutton объединения TXEvent и содержит, в частности, такие поля:

• window: TWindow - идентификатор окна, которому было послано сообщение (в случае, если оно было зарегистрировано для нескольких окон программы).

• x, y: longint - координаты x и y (в пикселях) мышиного курсора в момент нажатия.

• button: cardinal - номер нажатой кнопки (может принимать значения Button1, Button2, Button3).

• time: TTime - время (в миллисекундах), которое длилось событие. Может использоваться для определения "двойного щелчка".

В качестве примера приведем фрагмент кода, в котором рисуется черный пиксель в позиции мыши всякий раз, когда мы получаем событие "нажатие кнопки" от первой кнопки мыши, и стирается пиксель (то есть рисуется белый), когда нажата вторая кнопка мыши. Предполагается существование двух GC: gc_draw с черным цветом переднего плана и gc_erase с белым цветом переднего плана.

ButtonPress:

begin

(* сохраняем координаты кнопки мыши в целых переменных *)

(* также сохраняем идентификатор окна, в котором была нажата кнопка мыши *)

x:= an_event.xbutton.x;

y:= an_event.xbutton.y;

the_win:= an_event.xbutton.window;

(* проверяем, какая из кнопок была нажата, и действуем соответственно *)

case (an_event.xbutton.button) of

Button1:

(* рисуем пиксель в позиции мыши *)

XDrawPoint(display, the_win, gc_draw, x, y);

Button2:

(* стираем пиксель в позиции мыши *)

XDrawPoint(display, the_win, gc_erase, x, y);

else (* возможно, третья кнопка - игнорируем *)

;

end;

end;

Подобно событиям нажатия и отпускания кнопки мыши, нас также могут извещать о различных событиях перемещения мыши. Они делятся на два семейства. Первое - перемещение указателя мыши, пока никакие кнопки не нажимаются, и второе - движение указателя мыши при одной (или более) нажатых кнопках (это иногда называется операцией "перетаскивания" (drag)). Следующие маски событий должны быть добавлено в вызов XSelectInput() для получения извещений о таких событиях:

• PointerMotionMask - события указателя, перемещающегося в одном из окон программы, когда ни одна кнопка мыши не нажата.

• ButtonMotionMask - события перемещения указателя, пока одна (или более) кнопок мыши удерживается нажатой.

• Button1MotionMask - тоже, что и ButtonMotionMask, но только когда первая кнопка мыши удерживается нажатой.

• Button2MotionMask, Button3MotionMask, Button4MotionMask, Button5MotionMask - аналогично для кнопок 2, 3, 4 или 5.

В цикле обработки сообщений проверяется событие MotionNotify - указатель мыши перемещался в одном из окон, для которых мы запросили уведомление о таких событиях.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование в X Window средствами Free Pascal»

Представляем Вашему вниманию похожие книги на «Программирование в X Window средствами Free Pascal» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Александр Цветков
libcat.ru: книга без обложки
Gene Wolfe
Отзывы о книге «Программирование в X Window средствами Free Pascal»

Обсуждение, отзывы о книге «Программирование в X Window средствами Free Pascal» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x