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

Если Вы устанавливаете один ресурс, проще использовать вместо PtSetResources() функцию PtSetResource(). Для функции PtSetResource() Вам нет нужды устанавливать список аргументов.

Аргументы функции PtSetResource() являются комбинацией аргументов PtSetArg() и PtSetResources():

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

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

Например, установка одного ресурса через функцию PtSetResources() требует примерно такого кода:

PtArg_t args[1];

PtsetArg(&args[0], Pt_ARG_BEVEL_WIDTH, 5, 0);

PtSetResources(ABW_shapes_cbox, 1, args);

Установка того же ресурса функцией PtSetResource() выглядит так:

PtSetResource(ABW_shapes_cbox, Pt_ARG_BEVEL_WIDTH, 5, 0);

Это выполняется всего одним вызовом функции и не требует никакого массива args.

    1. Получение ресурсов

С получением более чем одного значения ресурсов связано два шага:

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

  • Получение значения с использованием функции PtGetResources().

Если Вы получаете один ресурс, проще использовать функцию PtGetResource() – Вам не надо устанавливать список аргументов. См. раздел "Получение одного ресурса" ниже. Имеется два метода получения ресурсов: один, связанный с указателями, и второй, с ними не связанный. "Безуказательный" метод обычно проще и безопаснее:

  • Так как Вы получаете копию значения, шансы нечаянно переписать настоящее значение уменьшаются.

  • Вам не надо заботиться о типе значения (short или long)

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

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

          1. Не используя указатели

Если Вы установили в ноль значения аргументов value и len при вызове PtSetArg(), функция PtGetResources() возвращает значение ресурса (преобразованное в long) следующим образом:

Тип ресурса

value

len

Flags (любого типа С)

Значение ресурса

не применяется

Scalar (любого типа С)

Значение ресурса

не применяется

Pointer (любого типа С)

Значение ресурса

не применяется

String

Адрес строки

не применяется

Struct

Адрес данных

не применяется

Array

Адрес первого элемента массива

число членов массива

Alloc

Адрес, где хранится ресурс

не применяется

Boolean

0 (ложь) или 1 (истина)

не применяется

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