пишите нам 
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки к Солнцу! Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
 

Приветствуем на Ладошках!

Ладошки, у меня РАНЧИК РОДИЛСЯ! :-) ... Уважаемые давние поклонники и посетители Ладошек! Я запускаю коммьюнити-сайт, новый проект, а вы все, будучи https://www.facebook.com/run4iq Бег для интеллектуалов. Бег для интеллекта. Бег "за" интеллектом. Он сам не придёт ;-) Ранчик родился! Андрей AKA Andrew Nugged Ладошки служат как архив программ для Palm OS и Poclet PC / Windows Mobile и разрешённых книг с 15 окрября 2000 года.
 
Статьи на Ладошках: о КПК и гаджетах
список групп статейВы пишете статьи? Контактируйте с нами!

 
О custom control’ах и их реализации в виде gadget’ов (Palm OS)


Автор/Источник: Ронин Виктор
» 28.10.2002 23:57,
просмотров сегодня: 1, всего: 3086
статья размещена в группе: Программирование
оценка: 2.632, 19 голосов


Сложность: Intermediate/Advanced


Изначально в PalmOS вложено порядка 10 различных видов элементов управления, это:

  • Button’ы (push, graphic, repeat и некоторые их комбинации)
  • Field
  • Table
  • Scollbar
  • два вида slider’ов(обычный и feedback)
  • Bitmap’ы и
  • Checbox’ы (которые можно организовывать в группы, для получения функциональности аналогичной radiobutton в Windows)
  • Graffiti shift indicator
  • List
  • Selector trigger
  • а также некоторое кол-во стандартных диалогов...

По мнению многих разработчиков под PalmOS данный выбор элементов управления не слишком логичный, так как функционирование большинства кнопок и selector trigger’а очень схожи, и не имело смысла их разделять на разные элементы управления. Также отсутствует разумная система связи scrollbar’ов с field’ами и tabl’ами. При этом не хватает таких элементов управления, как дерево или поле ввода с отображение * вместо букв (для ввода паролей) и д.р.

Так или иначе, для разработчиков было оставлено несколько методов расширения набора элементов управления : полная обработка всех событий и прорисовка специальных элементов управления (custom control) на экране или использование gadget’ов. Рассмотрение использования gadget’ов значительно интересней и информативней, так как оно предполагает облегчение создания новых элементов управления.

Как описано в PalmOS документации : Gadget позволяет вам реализовывать новые UI объекты. Gadget содержит базовую информацию, которая полезна для реализации функций прорисовки gadget’а и обработки пользовательского ввода. Фактически есть два типа gadget’ов — обычные (для PalmOS версии младше 3.5) и extended (для PalmOS версии 3.5 и старше).

Про простые gadget’ы хватит сказать буквально пару слов — они могут выставляться в constructor’е и являются ни чем большим как просто прямоугольником, координатами которого вы можете воспользоваться при написании своего кода. Вам необходимо будет вставить свой код на обработку событий frmOpenEvent и frmUpdateEvent для прорисовки gadget’а, и на penDownEvent и keyDownEvent вызывать функции, которые будут проверять, не произошло ли действие (щелчок или ввод буквы) именно в gadget’е. И в случае, если событие произошло произошло, то выполнять какие-то действия. Как результат — обычные gadget’ы отличаются от метода полной обработки и прорисовки, только тем, что в constructor’е можно будет видеть позицию gadget’а и его координаты будут храниться не в коде, а в ресурсах.

Extended gadget’ы предоставляют гораздо больше возможностей. Функцией FrmSetGadgetHandler можно выставить обработчик событий происходящих в вашем gadget’е. Система автоматически будет посылать событий прорисовки/стирания, удаления и щелчков обработчику вашего gadget’а.

Важное замечеание: При установки SDK 5.0, изменилось описание обработчика событий gadget’а с

Boolean (FormGadgetHandlerType) (struct FormGadgetType *gadgetP, UInt16 cmd, void *paramP), на

Boolean (FormGadgetHandlerType) (struct FormGadgetTypeInCallback *gadgetP, UInt16 cmd, void *paramP)

На самом деле, если поглядеть в .h файлы, то можно увидеть, что FormGadgetType и FormGadgetTypeInCallback полностью идентичны. Эти изменения в PalmOS 5.0 были вызваны тем, что в нем запрещен прямой доступ к атрибутам control’ов из программы. Поэтому им пришлось разделить доступ к атрибутам gadget’а из самой программы (который надо запрещать), и доступ к атрибутам gadget’а из обработчика (который надо разрешать).

Итак вернемся к Extended Gadget. В обработчик gadget’а передается 4 типа событий — formGadgetDrawCmd (необходимо прорисовать gadget), formGadgetEraseCmd (необходимо стереть gadget), formGadgetDeleteCmd (вызывается при удаление формы) и formGadgetHandleEventCmd (может содержать или frmGadgetEnterEvent — при щелчке в области gadget’а, либо frmGadgetMiscEvent, в случае если мы посылаем «user defined» событие gadget’у). Более детально об этом можно почитать в Palm OS Programmer API References, в статье о FormGadgetHandler.

Также достаточно удобной возможность является возможность передачи обработчику Gadget’а указателя на данные, для этого можно воспользоваться функцией FrmSetGadgetData. Обычно эта функция вызывается на frmOpenEvent. Если вы воспользовались этой функцией, то перед закрытием формы, необходимо вызывать снова эту функцию, но передав ей в виде параметра NULL, либо, это надо сделать внутри обработчика gadget’а, на formGadgetDeleteCmd. Данная особенность не описана в документации PalmOS, однако если функция не будет вызвана перед закрытие с параметром NULL, то на некоторых реализациях PalmOS закрытие формы вызовет ошибку.

Как я уже сказал, выше, не все продумано в Palm OS. Как показала практика, всю необходимую функциональность не получается поместить в обработчике gadget’а. Код обработки взаимодействия с scrollbar’ом, прихода событий нажатий на кнопки или написания букв приходится располагать в обработчике формы. При этом либо весь код пишется в обработчике формы, либо в него помещается только код перенаправляющий события в обработчик gadget’а, с помощью функции EvtAddEventToQueue.

Примеры реализации полноценных Gadget’ов вы можете посмотреть в DateBook из examples из SDK

Таким образом достаточно сложный вопрос использовать или нет gadget’ы... Тут каждый должен выбрать для себя, либо он пишет все сам, либо использует некую смесь из событий, обрабатываемых системой и событий обрабатываемых самописаным кодом

Существует также еще три метода создания custom control’ов, основанные на изменение прорисовки List’ов и Table’ов, а также на изменении функционирования стандартных control’ов с помощью перехвата функций. Но о них я расскажу в следующих статьях.

1   2   3   4   5
«хуже     ваша оценка     лучше»


Обсуждение
01.11.2002 00:16 - Критик

Ну вот это можно назать «статьей» (правда, маленькой). По крайней мере, это не пара предложений, выдернутых из PalmOS Reference.


04.02.2004 18:22 - lucas

все в тему — предыдущие шедевры СТАТЬЯМИ назвать тяжко :)))


16.10.2005 22:59 - -=red=-

Все таки я не воткнул в то что ест гаджет...



Чтобы писать комментарии вам нужно
авторизоваться (войти) или зарегистрироваться


 
Регистрация товарного знака в Украине patent.km.ua.
Telephones, address and opening times for shops, post and banks in the UK
 
 

 

статьи
по этой теме
 
EWE — инструмент разработки Java-приложений для платформы PocketPC
04-02-2008, рейтинг(общ.): 3.4, просм.: 0/5824

Платформа Palm OS: защита программного обеспечения
14-05-2003, рейтинг(общ.): 2.862, просм.: 0/8829

Немножко о работе с сетями (Palm OS)
18-03-2003, рейтинг(общ.): 2.22, просм.: 0/4452

Установка цветов прорисовки (Palm OS)
15-01-2003, рейтинг(общ.): 2.35, просм.: 0/2771

Накладывающиеся Control’ы (Palm OS)
29-12-2002, рейтинг(общ.): 2.572, просм.: 0/2571

Создание Static Library (Palm OS)
28-12-2002, рейтинг(общ.): 2.9, просм.: 0/3230

Использование внеэкранного буфера при высоком разрешении (Palm OS)
11-12-2002, рейтинг(общ.): 2.226, просм.: 0/3340

Четыре метода перехвата нажатий на кнопки Палма (Palm OS)
28-11-2002, рейтинг(общ.): 2.653, просм.: 0/3607

Ссылки по программированию (Palm OS). Часть 3
21-11-2002, рейтинг(общ.): 1.812, просм.: 0/5564

Самоудаляющаяся программа (Palm OS)
21-11-2002, рейтинг(общ.): 2.364, просм.: 0/3042

Программирование под Palm OS: Урок 1. Знакомство с CodeWarrior и Constructor’ом
15-11-2002, рейтинг(общ.): 4.438, просм.: 0/4426

Недокументированные функции MemSemaphoreReserve и MemSemaphoreRelease (Palm OS)
14-11-2002, рейтинг(общ.): 2.749, просм.: 0/2541

Устройство и функционирование Shared Library (Palm OS)
12-11-2002, рейтинг(общ.): 5, просм.: 0/2647

Программирование под Palm OS: Урок 0. Что нужно для того, чтобы писать под Palm?
09-11-2002, рейтинг(общ.): 3.824, просм.: 0/3130

Коротко о вставке текста в Field’ы (Palm OS)
07-11-2002, рейтинг(общ.): 2.44, просм.: 0/2434

Ссылки по программированию (Palm OS). Часть 2
31-10-2002, рейтинг(общ.): 2.475, просм.: 0/5211

Работа с полями таблицы (Palm OS)
31-10-2002, рейтинг(общ.): 2.334, просм.: 0/2749

Работа с потоковыми файлами на Palm’е (File Streaming API) (Palm OS)
31-10-2002, рейтинг(общ.): 2.095, просм.: 0/2880

Хранение проекта в системе контроля версий (Palm OS)
29-10-2002, рейтинг(общ.): 2.111, просм.: 0/2894

Быстрая работа с графикой (Palm OS)
25-10-2002, рейтинг(общ.): 2.167, просм.: 0/3371

а вы знаете, что есть:
- рейтинг-каталог сайтов Ладошек?

поддержите
Ладошки
 
Рейтинг Ладошек: КПК, мобильность, коммуникаторы, смартфоны, гаджеты, высокие технологии Рейтинг каталога сайтов Хмельницкого региона Поддержите Ладошки: Как поддержать сайт?
Использование материалов сайта разрешено только при наличии
гиперссылки на страницу Ладошек без блокировки индексации
реклама на сайте    Andrew Nugged © 2000-2015