 
  
  
  
  
 Следующий пункт: Дополнительные возможности 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