Для модификации ресурсов уже созданного widget приложение может использовать процедуру
void XtSetValues (Widget prWidget, ArgList prArgs, Cardinal nNumArgs); |
Здесь prWidget - объект, ресурсы которого устанавливаются, второй и третий аргументы содержат список пар: "имя ресурса/его значение" и число таких пар соответственно. Например, следующий фрагмент кода позволяет установить ширину и высоту widget класса Core:
. . . . . . . Arg aReserv[5]; /* Используется для задания ресурсов */ int i = 0; Widget prShellParent; /* Родительский объект */ Widget prCoreWidget; /* Идентификатор объекта */ . . . . . . . prCoreWidget = XtCreateWidget ("core", widgetClass, prShellParent, NULL, 0); XtSetArg (aReserv[i], XtNwidth, 100); i++; XtSetArg (aReserv[i], XtNheight, 150); i++; XtSetValues (prCoreWidget, aReserv, i); . . . . . . . |
X11R4 и выше поддерживает также функцию
void XtVaSetValues (Widget prWidget, . . . ); |
При ее вызове вместо многоточия должен стоять завершающийся нулем список пар: "имя ресурса, его значение". Приведенный выше пример с использованием XtVaSetValues( ) выглядит следующим образом:
. . . . . . . Widget prShellParent; /* Родительский объект */ Widget prCoreWidget; /* Идентификатор объекта */ . . . . . . . prCoreWidget = XtCreateWidget ("core", widgetClass, prShellParent, NULL, 0); XtVaSetValues (prCoreWidget, XtNwidth, 100, XtNheight, 150, NULL); . . . . . . . |
Xt позволяет получить текущее значение ресурса widget, используя процедуру
void XtGetValues (Widget prWidget, ArgList prArgs, Cardinal nNumArgs); |
Здесь prWidget - это объект, значения ресурсов которого будут получены. Второй аргумент содержит список пар, каждая из которых задает имя ресурса и адрес, по которому будет сохранено его значение. Третий аргумент есть число таких пар. Например, приводимый ниже фрагмент кода позволяет получить текущее значение высоты созданного объекта.
. . . . . . . Arg aReserv[5]; Dimension nHeight; Widget prWidget; . . . . . . . XtSetArg (aReserv[0], XtNheight, &nHeight); XtGetValues (prWidget, aReserv, 1); . . . . . . . |
В результате в переменную nHeight будет скопировано текущее значение высоты для созданного widget. Переменная, в которую копируется значение ресурса должна иметь соответствующий ему тип.
Начиная с X11R4 можно использовать процедуру
void XtVaGetValues (Widget prWidget, . . .); |
При ее вызове вместо многоточия должен стоять завершающийся нулем список пар, задающих имена ресурсов и адреса, по которым будут сохранены их значения. Приведенный выше пример с использованием XtVaGetValues( ) выглядит следующим образом:
. . . . . . . Dimension nHeight; Widget prWidget; . . . . . . . XtVaGetValues (prWidget, XtNheight, &nHeight, NULL); . . . . . . . |