Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОУК / 09 семестр / Книги и методические указания / Руководство программиста в Photon.doc
Источник:
Скачиваний:
364
Добавлен:
04.03.2014
Размер:
7.99 Mб
Скачать

Глава 10. Манипулирование ресурсами в коде приложения

В этой главе описано, как Вы можете устанавливать и получать значения ресурсов виджетов из Вашего приложения. Глава включает:

  • Списки аргументов

  • Установка ресурсов

  • Получение ресурсов

Хотя Вы и можете устанавливать начальные значения ресурсов виджетов в PhAB'е, Вам, вероятно, понадобится получить доступ к ним из своего кода. Например:

  • когда появляется диалог, Вам может понадобится предварительно инициализировать какие-то отображаемые данные, так что Вы будете устанавливать ресурсы;

  • когда пользователь введёт значение в виджете PtText, набрав некий текст, Вам, возможно, понадобится это значение в Вашей программе, так что Вы будете получать ресурсы.

Дополнительно, если Вы используете функцию PtCreateWidget(), чтобы приписать значение (instantiate) виджету в Вашем коде, Вы можете задавать его ресурсам какие-то первоначальные значения.

Значения ресурса устанавливаются и извлекаются путём использования списка аргументов. Вот два шага, приводящие к установке или извлечению более чем одного значения ресурса:

  • Установка списка аргументов с использованием макроса PtSetArg()

  • Установка значения с использованием функции PtSetResources(), или извлечение значения с помощью функции PtGetResources().

Если Вы извлекаете или устанавливаете один ресурс, проще использовать функции PtGetResource() или PtSetResource() – в этом случае Вам нет необходимости устанавливать список аргументов.

Список аргументов

Список аргументов – это массив структур PtArg_t (см. "Справочник библиотечных функций Photon"). Каждый из этих элементов определяет ресурс виджета и новое значение для ресурса (или адрес значения, которое будет устанавливать текущее значение ресурса).

Чтобы инициализировать каждый элемент списка аргументов, можно использовать макрос PtSetArg():

PtSetArg( PtArg_t *arg, long type, long value, long len);

 Если значение не требуется вычислять во время исполнения, Вы можете для инициализации списка аргументов использовать вместо этого функцию Pt_ARG(). Для получения более полной информации см. "Справочник библиотечных функций Photon".

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

тип

описание

Alloc

Объект памяти произвольного размера

Array

Массив

Boolean

Бит, который может быть либо выставлен, либо сброшен

Color

Цвет

Complex

Ресурс, который обрабатывается особым образом; см. ниже

Flag

Значение, в котором каждый бит имеет свой смысл

Function

Указатель на функцию

Image

Указатель на структуру PhImage_t

Link

Связанный список

Pointer

Указатель на адрес, который Вы определяете

Scalar

Значение, которое может быть представлено в одном long

String

Завершающаяся NULL-ом строка

Struct

Тип данных фиксированного размера, обычно структура, float или double

Для получения информации по ресурсам, оговоренным для каждого виджета, см. "Справочник виджетов Photon'a".

 Ресурсы compex являются особыми; для получения инструкций по их установке и получению значения см. их описание в "Справочнике виджетов Photon'a". Виджеты, имеющие комплексные ресурсы, обычно имеют функции, облегчающие работу с ними.