пишите нам 
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки к Солнцу! Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
всё-таки лучший облачный файл-стор! Установите DropBox: ПОЖАЛУЙСТА, вот линк! До 25 ГБ бесплатно, приглашая друзей!
 

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

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

 
Четыре метода перехвата нажатий на кнопки Палма (Palm OS)


Автор/Источник: Ронин Виктор
» 28.11.2002 01:39,
просмотров сегодня: 1, всего: 3649
статья размещена в группе: Программирование
оценка: 2.653, 23 голоса


Сложность: Beginner

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

В Palm’е есть функция API KeySetMask, которая отвечает за блокировку или разблокировку аппаратных кнопок. Обычно данная функция вызывается два раза: один раз для блокировки некоторых кнопок, а другой, уже после этого, — для восстановления старой маски блокировки. Вообще одно из самых лучших правил программирования — каждая функциональная часть программы должна возвращать систему в изначальное состояние, то есть в то, в котором система была при входе в эту часть программы, изменяя только необходимые области памяти. Недостатком такого метода обработки аппаратных кнопок является невозможность изменения их функционирования (возможна только блокировка).

Второй метод — это написание в обработчике формы кода обработки события keyDownEvent. Этот код должен сверять код пришедшей клавиши (evtP->data.keyDown.chr) с кодами аппаратных кнопок, и, в случае их совпадения, делать необходимые действия, установив при этом флаг handled в 1, чтобы система не получила это событие на обработку. Недостатком является необходимость вставления в каждую форму обработчика keyDownEvent. Конечно, можно вынести код обработки этого события в отдельную функцию и вставить ее вызов в каждый обработчик формы, что сократит код, но так или иначе необходимо будет что-то вставлять в каждый обработчик формы.

Третий метод основан на втором, только вместо того, чтобы вставлять обработчик событий в каждую форму, можно модифицировать EventLoop так, чтобы эти события не доходили до обработчиков форм. Вот как выглядит стандартный EventLoop:

void EventLoop (void)
{
	UInt16 error;
	EventType event;

	do
	{
		EvtGetEvent (&event, evtWaitForever);

		if (!SysHandleEvent (&event))
			if (!MenuHandleEvent (0, &event, &error))
				if (!ApplicationHandleEvent(&event))
					FrmDispatchEvent (&event);
	}
	while (event.eType != appStopEvent);
}

Обычно в ApplicationHandleEvent обрабатываются события frmLoadEvent. Можно, либо добавить в ApplicationHandleEvent обработку события keyDownEvent, либо изменить EventLoop, добавив после ApplicationHandleEvent’а еще if (!KeyHandleEvent(&event)), где осуществлять обработку нажатия кнопок. Фактически, если надо изменить поведение аппаратных кнопок во всем приложение этот метод — один из самых удобных и простых.

Самый мощный, но и самый сложный метод связан с перехватом одной из следующих трех функций: EvtEnqueueKey, EvtGetEvent или SysHandleEvent. Главное, что здесь необходимо — это не допустить обработку клавиш системой. Так, в перехваченной функции EvtEnqueueKey до вызова старого обработчика необходимо проверять не является ли клавиша hardware, и если является, то не вызывать его. При перехвате функции EvtGetEvent, после вызова старого обработчика, проверяем, если пришедшее событие является keyDownEvemt и тип нажатой кнопки — аппаратная кнопка, то возвращаем из функции EvnGetEvent не keyDownEnt, а nilEvent. Проверка сравнивает полученное событие с keyDown и нажатую кнопку с hardware button. В SysHandleEvent до вызова старого обработчика проверять аналогичные EvtGetEvent’у условия, и если они выполняются то, не вызывать старый обработчик. Этот метод наиболее мощный, из-за того, что он позволяет блокировать/изменять функциональность не только в своей программе, но и в других приложениях, если, конечно, по выходу из программы не восстановить указатель на старые обработчики нажатий.

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


Обсуждение
07.11.2005 03:35 - Dmitry

Интересно было бы почитать о методах перехвата нажатий на кнопки Pocket PC.



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


 
Регистрация товарного знака в Украине patent.km.ua.
 
 
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

О custom control’ах и их реализации в виде gadget’ов (Palm OS)
28-10-2002, рейтинг(общ.): 2.632, просм.: 0/3131

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

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

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