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

Вы можете ссылаться на поверхности управления через:

  • указатель на структуру поверхности управления (PtSurface_t*)

  • числовой идентификатор (16-битовые PtSurfaceId_t).

Этот идентификатор уникальным образом идентифицирует поверхность управления внутри его соотнесённого виджета. Действительными значениями для идентификатора поверхности являются значения в диапазоне от 1 до 255 включительно.

Хотя метод указателя действует напрямую и потому более быстр, он не настолько безопасен, как метод идентификатора. Чтобы понять почему, обсудим, как поверхности управления организованы и хранятся в памяти.

В отличие от иерархии виджетов, выполненной как связанный список, поверхности управления хранятся как массив структур поверхностей (PtSurface_t). Основными причинами для хранения таким способом являются:

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

  • Массив снижает запросы на память в расчёте на одну поверхность. Для удовлетворения требования быстрого прохождения должен быть использован дважды связанный список, что существенно увеличивает требуемый объём памяти.

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

Поскольку Вы физически перемещаете поверхности управления по кругу в стековом порядке, их размещение в массиве изменяется, в результате чего меняются их адреса в памяти. Кроме того, при добавлении или удалении Вами поверхностей управления к виджету, массив необходимо переразмещать, что также станет причиной того, что сам массив в целом будет перемещаться в памяти. Со всеми этими возможностями по перемещению в памяти, цифровые идентификаторы являются единственным реальным способом локализации поверхности.

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

    1. ApIповерхностей управления

Функции, приведенные ниже, описаны в "Справочнике библиотечных функций Photon'a").

      1. Создание и уничтожение поверхностей управления

Следующие функции создают и уничтожают поверхности управления:

PtCreateActionSurface()

Создаёт поверхность управления внутри виджета, связанную с действием виджета

PtCreateSurface()

Создаёт обычную поверхность управления внутри виджета

PtDestroyAllSurface()

Уничтожает все поверхности управления виджета

PtDestroySurface()

Уничтожает поверхность управления

PtDestroySurfaceById()

Уничтожает поверхность управления с заданным идентификатором

      1. Нахождения идентификаторов для поверхностей управления

Чтобы найти идентификатор поверхности и действия, используйте эти функции:

PtSurfaceActionId()

Получает идентификатор действия для поверхности

PtSurfaceId()

Получает идентификатор поверхности управления

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