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

ФлагPh_force_front

Приложение использует флаг Ph_FORCE_FRONT, когда оно хочет, чтобы регион оставался впереди всех последующих братьев, зависящих от принимаемого менеджера Photon'а по умолчанию месторасположения. Как обсуждалось ранее, когда регион открыт с принимаемым по умолчанию месторасположением, он размещается перед своим самым передним братом. Но если какой-либо брат имеет установленный флаг Ph_FORCE_FRONT, новый регион размещается позади самого заднего брата, у которого установлен флаг Ph_FORCE_FROM. Например, давайте посмотрим, что случится в следующем примере, если регион потомка 1 имеет установленный флаг Ph_FORCE_FRONT:

Когда открывается регион потомка 2 с принимаемым по умолчанию месторасположением (следующая диаграмма), он размещается позади региона 1, и регион 1 становится "братом впереди". Поскольку регион 2 был размещён с использованием принимаемых по умолчанию правил, он не наследует установку Ph_FORCE_FRONT региона 1:

Затем, если открывается регион 3 с принимаемым по умолчанию месторасположением, он размещается следующим образом:

 Приложение может установить флаг Ph_FORCE_FRONT при открытии региона (или позже), изменив флаги региона. Состояние этих флагов не оказывает влияние на то, как размещается сам регион – они влияют на то, как размещаются последующие братья, если эти братья открываются с использованием принимаемых по умолчанию правил месторасположения. То есть состояние Ph_FORCE_FRONT существующих братьев не оказывает влияние на месторасположение нового региона, если он открывается с заданными связями с братом. См. следующий раздел – "Задаваемое месторасположение".

Помните, что флаг Ph_FORCE_FRONT оказывает влияние только на местоположение регионов своих братьев – регион потомка всегда становится впереди его родителя.

Задаваемое месторасположение

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

Если определяется брат позади, то новооткрытый регион автоматически размещается перед этим братом.

Если определяется брат впереди, то новооткрытый регион автоматически размещается позади этого брата.

 Установка Ph_FORCE_FRONT задаваемого брата наследуется новым регионом. Если приложение открывает регион, задавая обоих братьев, и это приводит к неоднозначным требованиям месторасположения, то открытие не выполняется.

Использование регионов Открытие региона

Чтобы открыть регион, создайте виджет PtRegion. Виджет PtRegion не включён в палитру PhAB'a; для его реализации:

  • Вызовите в Вашем приложении функцию PtCreateWidget()

или

  • Создайте модуль окна, выберите его и используйте пункт "Change Class" в меню "Edit" PhAB'а, чтобы превратить окно в PtRegion. Для более полной информации см. раздел "Изменение класса виджета" в главе "Создание виджетов в PhAB".

Более полную информацию по виджету PtRegion см. в "Справочнике виджетов".

Размещение регионов

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

Структура PhRegion_t (см. "Справочник библиотечных функций Photon'а") содержит следующие члены. Они указывают на взаимосвязь региона со своими братьями:

  • bro_in_front – указывает на брата непосредственно впереди.

  • bro_behind – указывает на брата непосредственно сзади.

Для получения этой информации Вы можете использовать функцию PhRegionQuery().