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

Ресурсы pointer

При установке ресурса указатель должен задаваться третьим аргументом функции PtSetArg(). Четвёртый аргумент игнорируется и должен быть установлен в 0.

При вызове PtSetResources() виджет просто тупо делает копию указателя в ресурсе.

 Виджет не делает копию памяти, на которую ссылается указатель; не освобождайте память, пока виджет ещё ссылается на неё.

Например, каждый виджет включает ресурс Pt_ARG_POINTER, который Вы можете использовать для хранения во внутренней памяти виджета указателя на какие-либо произвольные данные. Виджет никогда не обращается к этим данным; это просто для использования им. Чтобы установить этот ресурс, выделите требуемую память и передайте указатель на неё как третий аргумент в PtSetArg(). Четвёртый аргумент установите в 0:

my_struct *user_data;

/* Выделение памяти и инициализация данных */

PtSetArg(&args[0], Pt_ARG_POINTER, user_data, 0);

Когда Вы вызываете PtSetResources(), виджет копирует значение указателя в свою внутреннюю память.