Главная » Просмотр файлов » Руководство программиста в Photon

Руководство программиста в Photon (953920), страница 25

Файл №953920 Руководство программиста в Photon (Руководство программиста в Photon) 25 страницаРуководство программиста в Photon (953920) страница 252013-09-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 25)

Каждый раз при изменении размеров родителя позиция потомка (и возможно, его размеры) изменяются, чтобы сохранить это взаимоотношение. Если какая-либо сторона потомка не прикреплена к родителю, это позволяет ей свободно "плавать". Если Вы явно установили размеры и/или позицию для закреплённого виджета, смещения его анкера пересчитываются автоматически.

 При использовании PhAB Вы не задаёте смещения анкера. Вместо этого Вы позиционируете виджеты на желаемом смещении путём установки ресурсов позиции (Pt_ARG_POS) и размеров (Pt_ARG_DIM). PhAB вычисляет смещение анкера автоматически, основываясь на относительных размерах и позициях родителя и закреплённых потомков.

На ширину порождённого виджета влияют анкеры для его левой и правой сторон; на высоту – анкеры для верха и низа. Если любой из противоположных пар краёв позволено "плавать", стеснённость встречается при выборе только позиционировании виджета в соответствующих размерах. Это означает, что виджет может скользить в любом их четырёх направлений для удовлетворения анкерных ограничений. Если оба края "заякорены", виджет также должен изменять свои размеры в этом направлении.

Рис. 7-1. Пример закрепления

 Если политика изменения размеров конфликтует с анкерами, флаги Pt_ARG_RESIZE_FLAGS переписывают Pt_ARG_ANCHOR_OFFSETS и Pt_ARG_ANCHOR_FLAGS.

Создание главного окна приложения представляет из себя простой пример использования анкерных ресурсов. В общем случае окно состоит по меньшей мере из двух частей: панель меню и рабочая область. Если рассматривать приложение, имеющее групповой виджет в рабочей области, мы можем идентифицировать типы анкеров, необходимые для того, чтобы сделать изменение его размеров в ответ на изменение размеров виджета окна корректным. Каждый край рабочей области прикреплён к соответствующему краю окна. Смещение левого и верхнего анкеров установлены такими же, как атрибуты позиции для виджета. Они должны быть вычислены, чтобы разместить рабочую область под панелью меню. Размеры виджета установлены в соответствии с желаемым объёмом рабочего пространства.

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

Мы ничего не делаем с панелью меню, поскольку она автоматически прикрепляется к вершине и сторонам окна.

Ресурсы анкеров

Ресурс Pt_ARG_ANCHOR_FLAGS (определённый для PtWidget) управляет прикреплением анкерами. Среди анкерных флагов имеются три, связанные с каждым краем виджета, эти три флага позволяют каждому краю быть прикреплёнными одним из трёх возможных способов:

  • прикрепиться к соответствующему краю его родителя

  • прикрепиться к противоположному краю его родителя

  • задать определённое местоположение, т.е. в какой-то пропорции от ширины или высоты виджета.

Эти флаги используют такие именующие схемы:

Pt_edge_ANCHORED_anchor

где

edge является именем закрепляемого края и должно быть TOP, LEFT, RIGHT или BOTTOM, т.е. верхний, левый, правый и нижний края соответственно;

anchor является именем родительского края, к которому производится прикрепление, т.е. родительского edge (см. выше), или принимать значение RELATIVE для пропорционального анкера.

Таким образом, определены следующие флаги (не, ну уже для совсем непонятливых!!! Прим. пер.):

  • Pt_LEFT_ANCHORED_LEFT

  • Pt_LEFT_ANCHORED_RELATIVE

  • Pt_LEFT_ANCHORED_RIGHT

  • Pt_RIGHT_ANCHORED_LEFT

  • Pt_RIGHT_ANCHORED_RELATIVE

  • Pt_RIGHT_ANCHORED_RIGHT

  • Pt_TOP_ANCHORED_BOTTOM

  • Pt_TOP_ANCHORED_RELATIVE

  • Pt_TOP_ANCHORED_TOP

  • Pt_BOTTOM_ANCHORED_BOTTOM

  • Pt_BOTTOM_ANCHORED_RELATIVE

  • Pt_BOTTOM_ANCHORED_TOP

Пропорциональный анкер задаёт положение края как процентное отношение к одному из размеров родительского окна. Левый или правый края задаются как пропорция ширины родителя, и верхний или нижний края задаются как пропорция высоты родителя. Пропорция обеспечена смещением анкера и выражается в десятых долях процентов.

Установка флагов анкеров в PhAB

Чтобы установить флаги анкера, щёлкните на ресурсе флагов анкера (Pt_ARG_ANCHOR_FLAGS) и используйте редактор флагов PhAB:

Установка флагов анкеров в программном коде Вашего приложения

Вы можете также установить эти флаги из Вашего программного кода, используя метод, описанный в главе "Манипулирование ресурсами в программном коде приложения". Для удобства каждый набор флагов имеет объединённую маску битов:

  • Pt_LEFT_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для левого края

  • Pt_RIGHT_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для правого края

  • Pt_TOP_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для верхнего края

  • Pt_BOTTOM_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для нижнего края.

Таким образом, чтобы установить левый и правый края нашей панели меню в приведенном выше примере, необходимо инициализировать элемент списка аргументов следующим образом:

PtSetArg(&arg[n], Pt_ARG_ANCHOR_FLAGS,

Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT |

Pt_TOP_ANCHORED_TOP,

Pt_LEFT_IS_ANCHORED | Pt_RIGHT_IS_ANCHORED |

Pt_TOP_IS_ANCHORED);

При установке анкерных флагов из программного кода Вашего приложения все смещения анкера задаются путём использования ресурса Pt_ARG_ANCHOR_OFFSETS. Этот ресурс берёт структуру PtRect_t (см. "Справочник по библиотеке Photon") как значение. Верхний левый угол прямоугольника используется для определения смещения анкера для верхнего и левого краёв виджета, и нижний правый угол прямоугольника указывает смещение анкера для правого и нижнего краёв.

Так, например, чтобы сделать рабочую область в 90% от ширины окна с равным размером обоих сторон, левый и правый края прикрепляются, используя следующий код:

PhRect_t offsets;

offsets.ul.x=50;

offsets.lr.x=950;

PtSetArg(&arg[n], Pt_ARG_ANCHOR_FLAGS,

Pt_LEFT_ANCHORED_RELATIVE | Pt_RIGHT_ANCHORED_RELATIVE,

Pt_LEFT_IS_ANCHORED | Pt_RIGHT_IS_ANCHORED);

PtSetArg(&arg[n+1], Pt_ARG_ANCHOR_OFFSETS, &offsets, 0);

Помните, что пропорциональность, обеспечиваемая смещением анкера, выражается в десятых долях процента.

Установка ограничений по размерам или позиционированию без анкеров

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

Член cbdata структуры PtCallbаckInfo_t (см. "Справочник виджетов Photon'а) является указателем на структуру PtContainerCallbаck_t, содержащую по меньшей мере следующие члены:

PtRect_t old_size.

Структура Ptrect_t (см. "Справочник библиотечных функций Photon"), определяющая предыдущий (старый) размер контейнера.

PtRect_t new_size Структура PtRect_t, определяющая новые размеры.

Глава 8. Генерирование, компилирование и запуск программного кода на исполнение

В этой главе описывается, как сгенерировать, сформировать, скомпилировать и запустить на исполнение программный код для приложения PhAB:

  • Использование диалога "Build+Run"

  • Генерирование программного кода приложения

  • Как организовать файлы приложения

  • Редактирование исходного кода

  • Компилирование и линковка

  • Запуск приложения на исполнение

  • Отладка

  • Включение в Ваше приложение не-PhAB файлов

  • Создание DLL из приложения PhAB

PhAB автоматически генерирует все, что требуется для того, чтобы превратить Ваше приложение в работающий исполняемый файл, в том числе:

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

  • создаёт заготовки файлов на С и/или С++ для специфических для данного приложения ответных реакций, функций установки модулей, функций инициализации приложения, и прочая

  • генерирует все файлы, требующиеся для компилирования и линковки приложения – файл Makefile, глобальный хеадер, главный файл и файл-прототип.

Выполняя всё это, PhAB позволяет Вам преуспеть в работе по написанию кода, обеспечивающего основную функциональность Вашего приложения.

В большинстве случаев генерирования программного кода Вы можете использовать диалог "Build+Run" или пункт "Generate" меню "Application". Однако Вы можете также генерировать некие файлы-заглушки на С и С++ в тех затруднительных случаях, когда при обустройстве Вашего приложения используются различные диалоги; используйте вот такие иконки, располагающиеся следом за областью имени функции или файла:

Это означает, что Вы вольны редактировать функцию ответной реакции, пока она ещё в процессе прикрепления её к виджету. Вы не можете перейти в диалог "Build+Run", сгенерировать оттуда код, а затем вернуться назад, чтобы написать функцию.

Использование диалога Build+Run

Рассматривайте диалог "Build+Run" как центр разработки для создания Вашего приложения. Из этого диалога Вы можете:

  • сгенерировать код приложения

  • собрать (скомпилировать и слинковать) Ваше приложение

  • отладить Ваше приложение

  • отредактировать код

  • запустить Ваше приложение на исполнение

Чтобы открыть диалог "Build+Run", выберите пункт "Build+Run" из меню "Application" или нажмите <F5>.

 Если пункт "Build+Run" тусклый, это значит, что Вы ещё не дали имя Вашему приложению. Для получения более полной информации см. раздел "Сохранение приложения" в главе "Работа с приложениями".

PhAB автоматически сохраняет Ваше приложение, когда Вы открываете диалог "Build+Run".

Рис. 8-1. Простой сеанс "Build+Run"

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

Генерирование программного кода приложения

Когда Вы делаете изменения в Вашем приложении, даже внутри Ваших собственных исходных файлов, Вам необходимо сгенерировать код приложения. Выполнение этого обеспечивает, что будет обновлён хеадер-файл прототипа proto.h. Вы можете смело генерировать код в любой момент – PhAB не будет переписывать какой-либо код, который Вы добавляли в заглушки, сгенерированный ранее. Перед генерацией кода PhAB сохранит Ваше приложение, если Вы модифицировали какие-либо модули. Чтобы минимизировать время компиляции, PhAB компилирует только те файлы, которые изменялись.

 Если Вы планируете использовать в Вашем приложении глобальный хеадер, Вы должны установить хеадер перед тем, как генерировать какой-либо код. Для получения более подробной информации см. раздел "Задание установочной информации приложения" в главе "Работа с приложениями" и раздел "Глобальный хеадер-файл" в главе "Работа с программным кодом".

Чтобы сгенерировать программный код Вашего приложения:

  1. Щёлкните на кнопке "Generate" диалога "Build+Run" или выберите пункт "Generate" из меню "Application".

  2. Если Вы ещё не выбрали платформу (т.е. комбинацию компилятора и процессора), появится диалог:

Характеристики

Тип файла
Документ
Размер
7,62 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее