Главная » Просмотр файлов » Руководство программиста в Photon

Руководство программиста в Photon (953920), страница 22

Файл №953920 Руководство программиста в Photon (Руководство программиста в Photon) 22 страницаРуководство программиста в Photon (953920) страница 222013-09-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 22)

 Вы можете добавить кодовые ответные реакции из программного кода своего приложения, но проще делать это в PhAB. Для получения более полной информации см. раздел "Ответные реакции" в главе "Управление виджетами в программном коде приложения".

Когда Вы создаёте привязанную реакцию кодового типа, редактор ответных реакций предложит Вам определить следующее:

Function Это функция, которая будет вызываться, когда виджет вызывает ответную реакцию. Для типов "Done" или "Cancel" эта функция необязательна, так что Вы можете присоединить ответную реакцию, просто закрыв модуль. Как сказано выше, "Done" и "Cancel" являются похожими, за исключением того, что ответная реакция "Done" в базовом окне завершает работу приложения, тогда как ответная реакция "Cancel" закрывает окно, но не завершает приложение. В действительности нет разницы между функциями ответных реакций "Done" и "Cancel" – они просто задействуют различный программный код в ответной реакции. Например, скажем, что Вы имеете диалог с кнопками "Done" и "Cancel". Если Вы присоедините ответную реакцию типа "Done" к кнопке "Done" и ответную реакцию типа "Cancel" к кнопке "Cancel", Вы сможете использовать одну и ту же функцию в программном коде в обоих случаях и просто смотреть на исполняемый код, чтобы определить, какая кнопка выбрана пользователем.

Горячая клавиша (только для ответных реакций горячих клавиш)

Клавиатурная клавиша и модификатор (такой как <Alt> или <Ctrl>), которые запускают ответную реакцию. См. раздел "Ответные реакции горячих клавиш".

Маска событий (только для обработчиков событий)

Позволяет Вам задавать, какие события Photon'а являются чувствительными для виджета. См. "Обработчики событий – необработанные и отфильтрованные ответные реакции".

Функции ответных реакций хрянятся в заготовочных файлах

Когда Вы задаёте функцию ответной реакции, PhAB генерирует заготовку функции; для получения информации по заданию языка (С или С++) и имени файла, см. раздел "Имена функций и файлов" в главе "Работа с программным кодом".

Ответные реакции горячих клавиш

Виджеты поддерживают ответные реакции горячих клавиш. Эти ответные реакции позволяют Вам присоединить клавиши клавиатуры к заданным функциям ответных реакций. Когда окно приложения получает фокус, горячие клавиши становятся активными. Нажатие такой клавиши вызывает соответствующую связанную с горячей клавишей ответную реакцию.

Этот раздел включает:

  • Горячие клавиши – основы

  • Задание метки горячей клавиши

  • Задание ответной реакции

  • Обработка горячей клавиши

  • Отключение ответной реакции

Горячие клавиши – основы

Вот некоторая основная информация о горячих клавишах:

  • Горячие клавиши – это комбинация клавиши символа и ключа-модификатора (<Alt>, <Shift> или <Ctrl>). По большей части для горячих клавиш используется <Alt>.

  • Вы можете использовать в качестве горячей клавиши модификатор сам по себе, однако это, по-видимому, не является хорошей идеей.

  • Горячая клавиша не вызывается, если блокирован какой-либо прародитель виджета, которому она принадлежит.

  • Горячая клавиша обрабатывается после того, как виджет получает событие клавиши. Если виджет поглощает событие, никакая ответная реакция горячей клавиши не вызывается. Так, когда текстовая область получает фокус, клавиша <Enter>, клавиши стрелок, клавиша пробела и все отображаемые символы не работают как горячие клавиши, поскольку виджет поглощает эти события. Это обычно является требуемым поведением (предполагать редактирование в приложении, все клавиши стрелок в котором определены как горячие).

Вы можете заставить обрабатывать горячие клавиши прежде получения события, установив Pt_HOTKEYS_FIRST в ресурсе Pt_ARG_CONTAINER_FLAGS контейнера виджета (окна, панели, ...), содержащего виджеты, которые обычно поглощают возможные события горячих клавиш. Установка этого флага в окне гарантирует, что все горячие клавиши будут обработаны до того, как какой-либо виджет получит событие нажатия клавиши. Для получения более полной информации см. ниже раздел "Обработка горячих клавиш".

  • Чтобы горячие клавиши виджетов были активны, эти виджеты должны быть выбираемы (за исключением расчленённых виджетов, таких как окна или меню). Убедитесь, что в ресурсах Pt_ARG_FLAGS виджетов установлены флаги Pt_SELECTABLE и Pt_GETS_FOCUS.

Если виджеты обычно не являются выбираемыми и Вы не желаете, чтобы их внешний вид изменился при выборе, Вы должны также установить флаг Pt_SELECT_NOREDRAW виджета.

  • Часто не имеет значения, с каким виджетом связана ответная реакция. В этих случаях просто присоедините ответную реакцию к окну.

Задание метки горячей клавиши

Установки горячей клавиши недостаточно – Вам необходимо сообщить пользователю об этом. Вы должны отобразить метку горячей клавиши на виджете, вызываемом горячей клавишей:

  • Для большинства виджетов отредактируйте ресурс клавиши быстрого доступа (Pt_ARG_ACCEL_KEY). Задайте символ в метке виджета, который Вы хотите подчеркнуть. Вы не можете включить в метку какую-либо клавишу-модификатор.

  • Для пунктов меню подчёркнутый символ является кнопкой быстрого доступа, которую Вы можете использовать для выбора пункта, когда отображено меню. Метка горячей клавиши отображается отдельно, справа от метки пункта меню. Задайте горячую клавишу (включая клавиши-модификаторы) в области "Accel Text" редактора меню.

Задание ответной реакции

В PhAB каждый список ответных реакций виджета отображает вход, называемый "Hotkey" или Pt_CB_HOTKEY, который используется для определения горячих клавиш. Перед тем как определить горячую клавишу, Вам необходимо определить, где это сделать. Где Вы определите ответную реакцию горячей клавиши, зависит от того:

  • где должен появиться модуль (такой как меню)

  • какой виджет Вам нужен в функции ответной реакции

  • куда пойдёт пользователь, чтобы нажать горячую клавишу

Где должен появиться модуль

Когда Вы определяете горячую клавишу, Вы можете задать, где появиться модулю. Например, если горячая клавиша предназначена для отображения модуля меню, связанного с виджетом PtModuleButton в Вашем PtMenuBar окна, определите горячую клавишу в кнопке меню. Используйте "Location dialog", чтобы меню появилось под кнопкой меню. Для получения более полной информации см. раздел "Позиционирование модуля" в главе "Работа с модулями".

Какой виджет Вам нужен в функции ответной реакции

Виджет, имеющий ответную реакцию, является подходящим для функции ответной реакции.

Куда идти пользователю, чтобы нажать горячую клавишу

Например, если горячая клавиша является быстрым входом в пункт меню, добавьте горячую клавишу к окну, в котором меню используется, а не к модулю меню.

Горячие клавиши в данном модуле должны быть уникальны. Если Вы определили некую клавишу более одного раза, используется последнее определение.

Если Вы разрабатываете многоязычное приложение, Вам понадобятся различные наборы горячих клавиш для каждого языка. См. главу "Поддержка международных языков".

Когда Вы выбираете ответную реакцию Pt_CB_HOTKEY, всплывает редактор ответных связей с областью "Hotkey" в зоне связанной информации:

Рис. 6-11. Область "Hotkey" в редакторе ответных реакций

При создании ответных реакций горячей клавиши Вы должны заполнить область "Hotkey". Есть два пути установить горячую клавишу: один простой, другой не очень.

  • «не такой уж простой способ» – Вы можете набрать значение горячей клавиши в шестнадцатеричном формате в области "Hotkey". Чтобы найти значение для клавиши, которую Вы хотите использовать, посмотрите хеадер-файл <photon/PkKeyDef.h> и найдите имя клавиши, предварённое префиксом Pk_.

 Используйте для горячих клавиш прописные буквы; заглавные не будут работать. Например, для горячей клавиши <Alt>+<F> смотри шестнадцатеричное значение не для Pk_F, а для Pk_f.

Область имеет также три переключающиеся кнопки – "Ctrl", "Shift" и "Alt", позволяющие Вам задать модификатор для горячей клавиши.

  • «простой способ» – нажмите кнопку справа от кнопки-переключателя "Alt", затем нажмите сочетание клавиш, которое Вы хотите использовать в качестве горячей клавиши. PhAB автоматически определит клавишу и модификатор, которые Вы нажали.

Обработка горячих клавиш

Вот как работает горячая клавиша:

  • когда событие клавиши достигает окна, окно направляет событие своим порождённым виджетам;

  • если порождение это событие поглощает, ничего больше не происходит;

  • в противном случае событие проверяется в списке горячих клавиш окна. Если горячая клавиша найдена, вызывается ответная реакция;

  • если ответная реакция не найдена, просматривается список горячих клавиш родительского окна, и далее наверх по иерархии окон.

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

Pt_HOTKEY_TERMINATOR

Не допускает проход поиска горячей клавиши наверх к родительскому контейнеру. Флаг Pt_HOTKEY_TERMINATOR работает, только если он установлен в разобранном виджете контейнерного класса.

Pt_HOTKEYS_FIRST

Обработка событий клавиш, достигших контейнера, как горячих клавиш, перед тем как они проходят к потомкам контейнера. Если событие является горячей клавишей, оно поглощается, т.е. не проходит к потомкам.

Отключение горячих клавиш

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

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

  • если горячая клавиша присоединена к кнопке, установите флаг 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" базового окна, даже при том, что порождённое окно ещё имеет фокус.

Характеристики

Тип файла
Документ
Размер
7,62 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее