На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование под PalmOS"
Правила раздела просты:
1. Будьте вежливыми.
2. Задавате вопросы только по теме. Пользовательские вопросы (у меня не работает пальм) являются оффтопиком. Пользуйтесь конференциями palmz.in, hpc.ru, ihand.ru .
3. Поиск вареза запрещен.
4. Пользуйтесь поиском. Не надейтесь, что кому-то доставляет удовольствие отвечать в сотый раз на один и тот же вопрос.
  
> Перехватить нажатие home hardbutton (virtual graffiti icon)
    Я хочу обработать событие нажатия на кнопку Home.
    Подписываюсь на уведомление:
    ExpandedWrap disabled
          UInt16  cardNo;
          LocalID dbID;
          if (SysCurAppDatabase(&cardNo, &dbID) == errNone) {
              SysNotifyRegister(cardNo, dbID, sysNotifyVirtualCharHandlingEvent,  NULL, sysNotifyNormalPriority, NULL);
          }

    Обрабатываю полученное уведомление:
    ExpandedWrap disabled
              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?
    Спасибо
      Б..ть, ну неужели трудно догадаться, что 264 это в десятичной системе, а практически все константы в заголовочных файлах указаны в шестнадцатиричной системе? Сложно посмотреть, что тот же vchrHard1 задефайнен в шестнадцатиричной системе? >:( Пошевелив мозгами, находим, что 264 = 0x0108, а это vchrLaunch.
        Если событие нужно обрабатывать только внутри своей АКТИВНОЙ программы, SysNotifyRegister делать не нужно. Достаточно поставить свой обработчик событий до системного.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0212 ]   [ 15 queries used ]   [ Generated: 29.03.24, 01:36 GMT ]