Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / photon_old.doc
Скачиваний:
40
Добавлен:
02.04.2015
Размер:
7.88 Mб
Скачать
          1. Ресурсы alloc

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

my_struct user_data;

/* Инициализация данных */

PtSetArg(&args[2], Pt_ARG_USER_DATA, &user_data, sizeof(user_data));

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

          1. Ресурсы image

Ресурсы образов спроектированы для хранения структуры PhImage_t. Например, виджет PtLabel имеет ресурс Pt_ARG_LABEL_IMAGE, который Вы можете использовать для хранения образа. Чтобы установить этот ресурс, создайте и инициализируйте структуру PhImage_t, затем передайте указатель на неё как третий аргумент в PtSetArg(). Четвёртый аргумент должен быть 0:

PhImage_t *my_image;

/* Создание и инициализация образа */

PtSetArg(&args[2], Pt_ARG_LABEL_IMAGE, my_image, 0);

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

          1. Ресурсы array

При установке значения массива третьим аргументом в PtSetArg() является адрес массива. Четвёртым аргументом является число элементов массива. Например, для установки Pt_ARG_ITEMS списка выборов для виджета типа "combo box", может использоваться следующий вход в список аргументов:

char* cbox_items[3] = {"Circle", "Rectangle", "Polygon"};

PtSetArg(&args[3], Pt_ARG_ITEMS, cbox_items, 3);

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

          1. Ресурсы flag

При установке флага третьим аргументом в PtSetArg() является битовая область, задающая значение устанавливаемых битов. Четвёртым аргументом является битовая маска, указывающая, какие элементы битовой области должны использоваться.

 В качестве значения используйте Pt_TRUE, Pt_FALSE или комбинацию определёных битов и их дополнений. Не используйте значения 1, поскольку это содержит просто один бит как таковой; этот бит может не соответствовать биту, который Вы пытаетесь установить.

Например, следующий список аргументов задаёт выставление флага Pt_COMBOBOX_STATIC в виджете типа combo box (так что combo box всегда отображает список пунктов):

PtSetArg(&args[4], Pt_ARG_CBOX_FLAGS, Pt_TRUE, Pt_COMBO BOX_STATIC);

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

          1. Ресурсы function

При установке ресурса функции третьим аргументом для функции PtSetArg() передаётся указатель функции. Четвёртый аргумент игнорируется; установите его в 0. Например, чтобы задать функцию прорисовки виджета PtRaw, установите ресурс Pt_ARG_RAW_DRAW_F следующим образом:

PtSetArg(&args[0], Pt_ARG_RAW_DRAW_F, &my_raw_draw_fn, 0);

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

Соседние файлы в папке Литература