Подробно формат файла описания ресурсов (или просто файла ресурсов) был приведен в п. 2.4.1 главы 2. Но когда программист работает с Xt, то возникает вопрос, как конкретно определяется значение того или иного параметра widget. Делается это следующим образом. Пусть объект с именем "WnameN" и класса "WclassN" имеет "родителей" с именами "WnameN-1", . . . , "Wname1" и принадлежащих классу "WclassN-1", . . . , "Wclass1" соответственно, причем "Wname1" - корень дерева widget программы. Тогда, чтобы задать значение его атрибута XtNA в ресурсном файле должна быть строка:
<имя программы>. "Wname1". . . . . "WnameN".A : <значение> |
Например, пусть в программе с именем "justas" объект "dialogBox" принадлежит классу TopLevelShell и имеет два родительских widget "core" класса Core и "appShell" класса ApplicationShell. Тогда значение его атрибута XtNheight (высота окна) равное 100 можно задать так:
justas.appShell.core.dialogBox.height : 100 |
Вместо имени любого объекта иерархии можно указать его класс. В этом случае значение ресурса будет распространяться на все объекты, у которых в иерархии на соответствующем месте стоит widget указанного класса . Так, например, если структура иерархии объектов программы такая, как указано на рисунке 3.2, то строки
justas.appShell.core1.dialogBox.height : 100 justas.appShell.core2.dialogBox.height : 200 |
означают, что widget с именем "dialogBox" и "родителем" "core1" имеет высоту 100. А widget с именем "dialogBox" и родительским widget "core2" имеет высоту 200. Строка же
justas.appShell.Core.dialogBox.height : 200 |
"говорит", что для обоих объектов высота равна 200. В строке, задающей ресурс, можно употреблять символ `*' (см. 2.4.1 главы 2).
Рис. 3.2. Иерархия объектов программы.