Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общее устройство X Window.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
79 Кб
Скачать
☆

VendorShell. Этот класс предназначен для того, чтобы дать возможность взаимодействия со специальными менеджерами окон.

TopLevelShell. Widget данного класса, как правило, используются как shell-объекты дерева объектов.

TransientShell. Этот класс отличается от предыдущего только особенностями взаимодействия с менеджером окон. Окна widget данного класса не могут быть минимизированы (превращены в пиктограмму). Но если в пиктограмму превращается "родитель" объекта класса TransientShell, то окно widget убирается с экрана. Класс TransientShell используется для создания диалогов.

ApplicationShell. Это подкласс класса TopLevelShell. Программа может иметь, как правило, только один экземпляр, принадлежащий классу ApplicationShell.

Атрибуты (ресурсы) объектов

Каждый из классов widget, а следовательно, и создаваемые на его основе объекты, имеют достаточно большое количество параметров. В терминах Xt они называются "ресурсы".

Ресурсы объектов однозначно идентифицируются символическими константами, начинающимися с букв "XtN". Например, класс Core имеет параметры XtNx, XtNy, XtNwidth, XtNheight, определяющие начальное положение окна на экране и его размеры. Класс Shell имеет атрибут XtNsaveUnder, "говорящий" о том, надо или нет сохранять содержимое экрана под окном при показе последнего.

Управление объектами

Для создания любого объекта, кроме shell-widget, можно использовать процедуру

Widget XtCreateWidget (String psName, WidgetClass pClass,

Widget prParent, ArgList arArgs, Cardinal nNumArgs);

Здесь первый аргумент — это произвольная строка, содержащая имя создаваемого widget. Оно используется для получения значений ресурсов объекта из базы данных ресурсов, а также для других целей. Второй аргумент задает класс widget. Третий аргумент — это родительский объект, который должен быть уже создан. В качестве последнего может быть указан shell-widget или любой объект, который может иметь подобьекты (принадлежит классу Composite или его подклассам). Четвертый и пятый аргументы XtCreateWidget() определяют значения дополнительных ресурсов, задаваемых при создании widget. Тип ArgList определен в файле "Intrinsic.h" следующим образом:

typedef struct {

String name;

XtArgVal value;

} Arg, *ArgList;

Здесь name представляет предопределенную строковую константу, задающую имя соответствующего ресурса (например, XtNwidth). value — это значение атрибута. Это поле имеет специальный тип XtArgVal, определение которого является системно-зависимым. Как правило, размер данного поля достаточен для того, чтобы поместить туда целое число или указатель. Но его не достаточно, например, для задания чисел типа double. Общее правило таково: если размер значения ресурса меньше sizeof (XtArgVal), то в value содержится непосредственно само значение, в противном случае поле value есть адрес области памяти, содержащей значение ресурса. Если аргументы arArgs и nNumArgs в XtCreateWidget( ) не используются, то они должны быть равны NULL и 0 соответственно.

Если ресурс не найден в списке arArgs, то его значение ищется в базе данных ресурсов программы. В случае, когда его нет и там, параметр получает значение по умолчанию.