logo search
Литература_1 / photon_old

Получение одного ресурса

Если Вы получаете значение одного ресурса, проще использовать вместо функции PtGetResources() функцию PtGetResource(). Для функции PtGetResource() Вам нет необходимости устанавливать список аргументов. Аргументами PtGetResource() являются:

int PtGetResource (PtWidget_t *widget, long type, long value, long len);

widget – это указатель на виджет, ресурс которого мы получаем. Другие аргументы устанавливаются точно так же, как и в PtSetArg(), когда с использованием указательного метода получаете более одного ресурса.

Вот пример получения одного ресурса функцией PtGetResources() и указательного метода:

unsigned short *width;

PtArg_t arg;

PtSetArg( &arg, Pt_ARG_BEVEL_WIDTH, &width, 0 );

PtGetResources( widget, 1, &arg );

При использовании функции PtGetResource() код имеет такой вид:

unsigned short *width;

PtGetResource( widget, Pt_ARG_BEVEL_WIDTH, &width, 0 );

PtGetResource() возвращает указатель непосредственно во внутреннюю память виджета. Не пытайтесь модифицировать ресурс, напрямую используя этот указатель. Такая модификация не приведёт к ожидаемому эффекту и вызовет ошибки поведения виджета. Никогда не освобождайте указатель – результатом этого наверняка будет ошибка памяти или другая сходная ошибка. Использование указателя const поможет избежать таких проблем.

Изменение состояния виджета может сделать указатель потерявшим силу, используйте его сразу же.