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

Чтобы получить доступ к помощи из кода Вашего приложения, используйте следующие функции (описанные в "Справочнике библиотечных функций Photon'а"). Они Вам не нужны, если Вы используете метод, описанный в разделе "Связывание помощи с виджетами":

PtHelpUrl()

Отображает текст помощи по URL

PtHelpUrlRoot()

Устанавливает корневой URL

PtHelpTopic()

Отображает текст помощи по маршруту тем

PtHelpTopicRoot()

Устанавливает корневую тему

PtHelpTopicTree()

Отображает текст помощи по дереву тем

PtHelpSearch()

Ищет строку

PtHelpQuit()

Закрывает просмотровщик помощи

 Функции PtHelpUrlRoot() и PtHelpTopicRoot() не сохраняют переданную строку, так что не очищайте её, пока не закончили использование корня помощи.

  1. Глава 16. Межпроцессные связи

Приложение Photon'а не сможет всегда работать в изоляции – время от времени ему понадобится связываться с другими процессами.

В этом разделе описано:

  • Коннекция (connections) [Вводим этот термин (для отличия от термина "соединение") как относящийся уже конкретно к механизму, обеспечиваемому библиотекой Photon'а – Прим. пер.]

  • Отсылка QNX-сообщений

  • Получение QNX-сообщений

  • Импульсы Photon'а

  • Обработка сигналов

  • Другие механизмы ввода/вывода

Операционная система QNX поддерживает различные методы межпроцессных связей IPC – interprocess communication), включая:

  • сообщения

  • импульсы

  • сигналы

Эти методы могут быть использованы в приложении Photon, если Вы будете достаточно аккуратны. Хотя лучше всего использовать коннекции Photon'а:

  • Коннекторы (connectors) позволяют двум связывающимся процессам найти друг друга. Поскольку коннекторы регистрируются в Photon'е, отсутствует риск возникновения конфликта между несколькими сессиями Photon'а, запущенных на одной машине.

  • Photon'овские коннекции "знают", как направить сообщение, даже если Вы имеете множество коннекций между одной и той же парой процессов. Если же Вы используете необработанные сообщения, обслуживаемые Neutrino, и процессы ввода, Вам, возможно, понадобится самим выполнять обработку.

Вот когда необработанные сообщения Neutrino [имеются в виду сообщения механизма message passing – Прим. пер.] и/или импульсы иногда могут оказаться лучшим вариантом:

  • Если один из двух связывающихся процессов не является приложением Photon'а, он не может использовать библиотеку Photon'а

  • Если два процесса необязательно принадлежат одной сессии Photon'а, им понадобится несколько иной способ нахождения друг друга

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

Главная петля обработки событий Photon'а, вызываемая Вашим приложением, отвечает за обработку событий Photon'а, так что вызываются самообновление виджетов и функции ответных реакций. Такая простая управляемая событиями модель программирования, используемая вместе с библиотекой виджетов Photon'а, в некотором смысле бросает вызов разработчику приложений, поскольку управляемая событиями петля исполняет безоговорочную MsgReceive() для получения событий от Photon'а. Это означает, что Вашему приложению надо быть внимательным, если оно хочет выполнить MsgReceive(), или события Photon'а могут "заблудиться" и пользовательский интерфейс может не обновиться.

Если Вам надо:

  • отвечать на другие сообщения в Вашем приложении;

  • исполнять ввод/вывод, используя другие механизмы (такие как, например, чтение из трубы [Ну не пайпами же это назвать! А слово конвейер – это другое. – Прим.пер.]);

  • обрабатывать сигналы;

  • отвечать на импульсы;

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

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