| |
X сервер направляет ввод клиенты посредством событий ввода, ассоциированных с окном. В простейшем случае, когда происходят события клавиатуры или указателя, X сервер посылает событие клиенту который явно выражает интерес в событиях этого типа в окне которое содержит указатель. Тем не менее, процесс обработки бывает и более сложным. Клиент может захватить кнопку указателя или клавишу клавиатуры, указатель или клавиатуру, или целиком сервер; клиент при этом принимает соответствующие события. Клиет может установить фокус ввода на некоторое окно, и X сервер затем передает события этому окну даже если указатель находится за пределами этого окна.
Для изоляции приложения от этих сложностей, Xt и Motif содержат средства для низкоуровневой обработки ввода пользователя в приложение:
Ресурс VendorShell, \textbl{XmNkeyboardFocusPolicy}, позволяет пользователю или приложению определять будет ли клавиатурные события доходить до виджета который содержит указатель или же виджета на котором пользователь нажал Btn1 (режим поведения "щелкни для ввода").
При использовании модели "щелкни для ввода", пользователь может также использовать клавиши для перемещения от виджета к виджету или от одной группы виджетов к другой.
Xt предоставляет базовый цикл диспетчеризации событий используемый большинством приложений. Xt берет события вне очереди приложения и распределяет их соответствующему виджету, обычно виджету который имеет фокус клавиатуры. Xt обычно вызывает процедуры действия связанные с определенными событиями посредством таблицы трансляции из спецификации события в процедуры действий. Процедура действия, когда выполняется, обычно вызывает список процедур обратного вызова.
Motif и Xt предоставляют мнемоники и ускорители, которые являются клавиши быстрого вызова для выполнения действий связанных с виджетом когда виджет не имеет фокуса ввода. Мнемоника это клавиатурный символ для клавиши которая активирует видимую кнопку меню. Ускоритель это описание события которое вызывает процедуры действия посредством таблицы трансляции.
Большинство приложений используют эти высокоуровневые интерфейсы, пременяя Xt и Motif для обработки ввода пользователя на низком уровне. Если приложение нуждается в большем контроле, оно может предоставить свой собственный обработчик событий, подпрограмму вызываемую из цикла диспетчеризации Xt когда виджет принимает событие указанного типа. Приложение также может предоставить собственный цикл диспетчеризации событий.
Вопросы ввода, фокуса и клавиатурной навигации обсуждаются более подробно в Главе 13.
Для большинства виджетов Xt и Motif самостоятельно производят обработку вывода. Например, в виджетах Label или Text, когда приложение изменяет отображаемый тектс, Motif автоматически перерисовывает содержимое виджета. Большинство виджетов имеют ресурсы которые управляют внешним видом вывода, таким как шрифт используемый при отображении текста.
Motif предоставляет виджет DrawingArea для приложений которые нуждаются в проведении графического вывода или большем контроле или гибкости при отображении текста. DrawingArea обсуждается более подробно в Главе 15.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |