Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
76
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
      1. Отключение горячих клавиш

Выдача пользователю визуальной индикации, что горячая клавиша отключена, отличается от действительного отключения горячей клавиши.

Для того, чтобы выдать визуальную индикацию, используйте технологию, соответствующую виджету:

  • если горячая клавиша присоединена к кнопке, установите флаг Pt_GHOST и снимите флаги Pt_SELECTABLE и Pt_GETS_FOCUS в ресурсе кнопки Pt_ARG_FLAGS;

  • если горячая клавиша присоединена к пункту меню, созданному в PhAB, вызовите ApModifyItemState();

  • ...

Чтобы оключить горячую клавишу, используйте одну из следующих технологий:

  • Не отключайте горячую клавишу. Вместо этого, в качестве первого, что должно быть выполнено в программном коде ответной реакции горячей клавиши, введите проверку на нечто, что должно быть сделано. Если это не сделано, просто вернитесь из ответной реакции. Например, если ответные реакции горячей клавиши – это "вклеить" текст, проверьте, есть ли что "вклеивать". Если нечего, просто вернитесь

или

  • За исключением разобранных виджетов, если виджет, к которому присоединена ответная реакция горячей клавиши, не является выбираемым, горячая клавиша обрабатывается так, как будто она не существует. Чтобы виджет был выбираемым, должен быть установлен флаг Pt_SELECTABLE в ресурсе Pt_ARG_FLAGS.

Хорошим основанием для такого подхода является то, что это работает, даже если Ваше приложение имеет одну и ту же горячую клавишу, описанную более чем в одном окне. Например, мы можем иметь меню "Edit" в базовом окне и кнопку "Erase" в порождённом окне, оба с сочетанием <Alt>+<E> в качестве горячей клавиши. Если в текущий момент фокус имеет порождённое окно и пользователь нажимает <Alt>+<E>, вызывается ответная реакция кнопки "Erase" порождённого окна.

Теперь, если мы отменим кнопку "Erase" в порождённом окне, мы хотим использовать <Alt>+<E> для того, чтобы появилось меню "Edit" базового окна. В этом сценарии, пока кнопка "Erase" является выбираемой, будет вызываться её ответная реакция. Поэтому мы просто делаем кнопку "Erase" невыбираемой. Теперь, когда пользователь нажимает <Alt>+<E>, появляется меню "Edit" базового окна, даже при том, что порождённое окно ещё имеет фокус.

или

  • Вы можете вызвать PtRemoveHotkeyHandler(), чтобы удалить горячую клавишу, и впоследствии вызвать PtAddHotkeyHandler(), чтобы включить её снова.

    1. Обработчики событий – необработанные и отфильтрованные ответные реакции

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

Вы найдёте это крайне полезным для получения событий Pt_EV_DRAG для конкретного окна. Для получения более подробной информации по перетаскиванию см. раздел "Перетаскивание" в главе "События".

Pt_Widget определяет следующие ресурсы обработки событий:

Pt_CB_FILTER

Вызывается перед тем, как событие достигло виджета

Pt_CB_RAW

Вызывается после того, как виджет обработал событие (даже если виджет поглотил событие)

 Описание необработанных и отфильтрованных обработчиков событий и их использования см. в разделе "Обработчики событий – необработанные и отфильтрованные ответные реакции" в главе "События".

Для получения более подробной информации о добавлении обработчиков событий в программный код приложения см. "Обработчики событий" в главе "Управление виджетами в программном коде приложения".

Чтобы присоединить необработанную или отфильтрованную ответную реакцию:

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

  2. Щёлкните на ресурсе Pt_CB_RAW (необработанные события) или Pt_CB_FILTER (отфильтрованные), чтобы открыть редактор ответных реакций.

  3. Всплывёт редактор с областью "Event Mask" в зоне связанной информации:

              1. Рис. 6-12. Область маски событий в редакторе ответных реакций

Область маски событий позволяет Вам задавать, к каким событиям Photon'а должен быть чувствителен виджет. Если случается любое из этих низкоуровневых событий, виджет вызывает ответную реакцию.

Щёлкните на иконке рядом с этой областью, чтобы открыть селектор событий:

              1. Рис. 6-13. Селектор событий

  1. Выберите события, к которым должен быть чувствителен виджет, затем закройте селектор.

Для получения более полной информации см. типы событий, описанные в структуре PhEvent_t в "Справочнике библиотеки Photon'а".

Соседние файлы в папке Литература_1