Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основная программа




Парадигма (система понятий) программирования

 

Давайте сравним, как Вы пишете не-PhAB (Photon) приложения текстового режима, и приложения PhAB.

 

Приложение текстового режима

Когда Вы пишете не-Photon'ное (текстового режима) приложение, Вы в основном концентрируетесь на основной программе, из которой Вы делаете такие вещи, как:

· инициализация приложения

· установка обработчиков сигналов

· посылка и получение сообщений

· итерации

· вызов подпрограмм, если требуется

· связь с консолью

· и, наконец, выход.

 

 

 

Рис. 7. Структура приложения текстового режима

Не-PhAB приложение

Приложение Photon'а, написанное без PhAB, похоже на приложение текстового режима, за исключением того, что вы также:

· инициализируете и реализуете виджеты приложения;

· устанавливаете ресурсы виджетов, включая такие:

¡ размер и позиция

¡ привязка

¡ текст

¡ список ответных реакций

¡ прочая

· пишете подпрограммы ответных реакций для обработки событий виджетов. При этом Вам может понадобится:

¡ создать окна и их виджеты, установить ресурсы, и затем реализовать их

¡ создать меню из виджета PtMenuButton, установить ресурсы и ответные реакции, реализовать эти меню

¡ уничтожить виджеты

¡ прочая

· вызвать PtMainLoop() в Вашей основной программе для обработки событий.

 

Обычно одна из Ваших ответных реакций выполняет завершение приложения. Написание приложений без PhAB означает, что Вы будете работать непосредственно с виджетами – со всей их кучей.

Рис. 8. Структура приложения Photon, написанная без использования PhAB

PhAB приложение

 

Когда Вы разрабатываете PhAB приложение, main-программа Вам предоставляется. Вместо того, чтобы заботиться об основной программе, Вы:

· обеспечиваете функцию, которая инициализирует приложение;

· устанавливаете обработчики сигналов, которые обрабатывают сигналы, когда те прибывают, и вызываете написанные Вами функции работы с сигналами;

· устанавливаете функции ввода для сообщений;

· пишете ответные функции для обработки событий от виджетов.

 

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

 

Рис. 9. Структура приложения Photon'а, написанная PhAB

 

Дополнительно, Вы не имеете в Вашем коде размер и позиции виджетов; Вы делаете это визуально в PhAB. PhAB также просматривается после инициализации, реализации, дереализации и уничтожения Ваших виджетов. PhAB даже обеспечивает модулем меню, что делает простым создание меню. Вы можете видеть, почему мы рекомендуем использовать PhAB!

1.4 Библиотеки Photon'а

 

Интерфейс программирования приложений Photon'а (API) – организован как набор функций, каждая из которых характеризуется двухсимвольным префиксом:

 

Al функции перевода PhAB (PhAB Translation functions), позволяющие Вам работать с файлами перевода (tranlation files) (для приложений PhAB или баз данных сообщений) без использования редактора перевода. Эти подпрограммы отсутствуют в библиотеке совместного доступа, чтобы их использовать, необходимо линковать приложение с библиотекой phexlib;

Ap функции PhAB, работающие с модулями, базами данных виджетов, переводом (translation) и прочая. Эти подпрограммы отсутствуют в библиотеке совместного доступа, чтобы их использовать, необходимо линковать приложение с библиотекой Ap;

mbstr функции строк многобайтных символов. См. приложение "Поддержка многоязычности Unicode";

Pd функции работы с рисуемым контекстом;

Pf службы шрифтов, включая метрики текстов, и генерация побитых карт символьных строк (generation of bitmaps of character strings). Для более полной информации см. главу "Шрифты";

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

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

Pi функции работы с образами (image). См. раздел "Работа с образами" в главе "Необработанное рисование и мультипликация";

Pm функции работы с памятью, которые можно использовать для уменьшения мерцания. См. раздел "Мультипликация" в главе "Необработанное рисование и мультипликация";

Pp функции печати, позволяющие устанавливать режимы и управлять печатью. См. главу "Печать";

Pt функции набора инструментов виджетов для создания, реализации и уничтожения виджетов, получении и установки ресурсов и прочая. Кроме использования виджетов в библиотеке виджетов Photon'а, Вы можете использовать виджеты третьей стороны или свои собственные виджеты;

Px функции расширений, работающие с загружаемыми образами, с файлами конфигурации, и другие полезные подпрограммы. Эти подпрограммы отсутствуют в библиотеке совместного доступа, чтобы их использовать, необходимо линковать приложения с библиотекой phexlib;

Rt функции таймера реального времени. См. раздел "Таймеры" в главе "Работа с кодом";

wc функции работы со строками символов расширенного (16-битного) набора. См. приложение "Поддержка многоязычности Unicode".

 

Функции и структуры данных этих библиотек описаны в книге "Справочник по библиотеке Photon'а". Функции mbstr, Pd, Pf, Pg, Ph, Pi, Pm, Pp, Pt, Rt и wc находятся в главной библиотеке Photon'а. Функции, используемые для растеризации потока рисования Photon'а, находятся в библиотеке phrender. Библиотеки ph, phrender и Ap доступны в форме общего доступа и в статической.

 

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

 

C Библиотека общего доступа ph не включает ничего, что требует операций с плавающей запятой (кроме виджета PtNumericFloat). Статическая версия это делает.

 

Функции Al и Px включены в библиотеку расширения phexlib, которая доступна только в статической форме.

 

! Библиотека photon предназначена только для приложений, созданных под микро-GUI Photon'а версии 1.14. Не комбинируйте эту библиотеку с текущими библиотеками или хеадер-файлами, в противном случае Ваше приложение не будет работать правильно.

 

1.5 Обзор построения приложений под PhAB




Поделиться с друзьями:


Дата добавления: 2014-12-10; Просмотров: 453; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.