Следующий пункт: Дополнительные возможности Xt
Надпункт: Программирование с использованием библиотеки Xt
Предыдущий пункт: Основы Xt
Xt предоставляет набор средств для создания объектов,
которые используются программами для общения с пользователем,
а в общем случае и с остальным внешним миром.
Каждый создаваемй программой widget
есть представитель того или иного класса.
Xt и пакеты, на нём основывающиеся, такие как
OSF/Motif, Athena, Tk/tcl, Open Look, etc.,
имеют большое количество таких классов.
Создание новых widget,
не предусмотренных в стандартных библиотеках,
требует и создания (определения) соответствующего класса,
что, обычно, является трудоёмкой задачей.
Каждый класс имеет ряд фиксированных характеристик,
являющихся общими для всех его экземпляров
(например, список callback-процедур).
Значения этих характеристик у самих объектов могут различаться.
Все классы Xt образуют иерархию
(см. рисунок).
Если класс B ближе к вершине иерархии, чем класс D,
то B называется базовым для D,
а D называется производным классом (или подклассом) для B.
Подклассы наследуют характеристики всех своих базовых классов.
Это означает, экземпляр класса имеет характеристики
не только своего класса,
но и атрибуты всех базовых классов.
Иерархия классов Xt.
В программах каждый класс идентифицируется переменной,
которая указывает на соответствующую структуру данных.
Эту переменную называют указателем на класс.
Данные этой структуры заполняются при инициализации Xt.
Основные классы widget:
- Object.
-
Абстрактный класс (класс, не порождающий собственного объекта),
который используется в качестве корня дерева всех объектов.
Он содержит единственный подкласс:
- RectObj.
-
Абстрактный класс,
который используется для определения
некоторых общих характеристик,
необходимых для функционирования различных типов объектов
(например, для объектов, не имеющих окна).
Он содержит подкласс:
- Core.
-
Корень дерева классов widget, имеющих окна.
Этот класс определяет характеристики,
общие для всех объектов, например такие,
как размер окна widget
и его положение на экране.
Содержит подкласс:
- Composite.
-
Widget, относящиеся к данному классу,
могут быть родительскими
по отношению к другим объектам.
Экземпляры класса Composite
определяют следующие особенности поведения
своих подобъектов:
- задаёт местоположение
``дочерних'' widget
согласно тем или иным ограничениям;
- при уничтожении освобождает память,
используемую подобъектами
(при уничтожении widget
класса Composite
сначала будут уничтожены
все её ``потомки'');
- управляет появлением на экране
окон своих дочерних widget;
- управляет передачей фокуса ввода
между объектами.
Класс Composite содержит подклассы:
- Constraint.
-
Это класс представляет собой
дальнейшее расширение базового класса.
Его экземпляры имеют дополнительные возможности
для управления размером и местоположением
своих потомков.
Например, подобъекты могут размещаться
в специальном порядке: в ряд, в столбец и т.д.
- Shell.
-
Это специальный класс,
предназначенный для взаимодействия
с менеджером окон.
Widget из этого класса может иметь
только одного потомка.
Класс Shell содержит подклассы:
- OverrideShell.
-
Это важный подкласс класса Shell.
Для окна widget данного класса
атрибут override_redirect
устанавливается в значение True,
т.е. менеджер окон его не контролирует.
Как правило, окна объектов этого класса
не имеют аксессуаров,
добавляемых менеджером окон
(заголовок, рамка, стандартные кнопочки),
и используются в основном для создания
меню различного типа.
- WMShell.
-
Это специальный подкласс
класса Shell,
содержащий дополнительные поля,
необходимые для взаимодействия
с менеджером окон.
Содержит:
- VendorShell.
-
Этот класс предназначен для того,
чтобы дать возможность взаимодействия
со специальными менеджерами окон.
Этот класс содержит подклассы:
- TopLevelShell.
-
Widget данного класса,
как правило, используются как
shell-объекты
дерева объектов программы.
Он содержит:
- ApplicationShell.
-
Программа может иметь,
как правило,
только один экземпляр,
принадлежащий классу
ApplicationShell.
- TransientShell.
-
Этот класс отличается от предыдущего
только особенностями взаимодействия
с менеджером окон.
Окна widget данного класса
не могут быть минимизированы
(превращены в пиктограмму).
Но если в пиктограмму превращается
родитель объекта
класса TransientShell,
то окно widget
убирается с экрана.
Класс TransientShell
используется для создания диалогов.
Каждый из классов widget, а следовательно,
и создаваемые на его основе объекты,
имеют достаточно большое количество параметров.
В терминах Xt они называются ``ресурсы''.
Xt предоставляет широкий выбор средств для работы с ними.
Следующий пункт: Дополнительные возможности Xt
Надпункт: Программирование с использованием библиотеки Xt
Предыдущий пункт: Основы Xt
WebMaster at Bolizm
Sat Oct 5 20:29:45 MSD 1996