3.2.4. Модификация и чтение ресурсов объекта.

    Для модификации ресурсов уже созданного 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);
	. . . . . . .