Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.203.221.104] |
|
Сообщ.
#1
,
|
|
|
Я хочу обработать событие нажатия на кнопку Home.
Подписываюсь на уведомление: UInt16 cardNo; LocalID dbID; if (SysCurAppDatabase(&cardNo, &dbID) == errNone) { SysNotifyRegister(cardNo, dbID, sysNotifyVirtualCharHandlingEvent, NULL, sysNotifyNormalPriority, NULL); } Обрабатываю полученное уведомление: if(notifyParamP->notifyType == sysNotifyVirtualCharHandlingEvent) { SysNotifyVirtualCharHandlingTag* tag = (SysNotifyVirtualCharHandlingTag*)notifyParamP->notifyDetailsP; if(tag->keyDown.chr == vchrHard1 || tag->keyDown.chr == hard1Chr) { //some actions } } Теперь вопрос. После нажатия на кнопку home hardbutton (virtual graffiti icon), tag->keyDown.chr оказывается равным не vchrHard1, как ожидалось, а непонятному для меня числу 264, которого даже в соответствующем заголовочном файле нет. Подскажите, что я делаю не так? Не хочу магические числа вводить в код. Что это за число 264, и почему tag->keyDown.chr не равен ожидаемому vchrHard1? Спасибо |
Сообщ.
#2
,
|
|
|
Б..ть, ну неужели трудно догадаться, что 264 это в десятичной системе, а практически все константы в заголовочных файлах указаны в шестнадцатиричной системе? Сложно посмотреть, что тот же vchrHard1 задефайнен в шестнадцатиричной системе? Пошевелив мозгами, находим, что 264 = 0x0108, а это vchrLaunch.
|
Сообщ.
#3
,
|
|
|
Если событие нужно обрабатывать только внутри своей АКТИВНОЙ программы, SysNotifyRegister делать не нужно. Достаточно поставить свой обработчик событий до системного.
|