Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 128

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 229 >> Следующая

В этом уроке мы рассмотрим использование компонента Directlnput при работе с двумя основными источниками получения пользовательского ввода — клавиатурой и мышью. Для работы с клавиатурой будет использоваться непосредственный опрос устройства, а при работе с мышью — буферизированный опрос. Использование оповещений мы не будем подробно рассматривать, но читатель может самостоятельно реализовать его на основе примера из урока 7, касающегося применения оповещений при работе с DirectSound, и сведений, приведенных в конце этого урока.
Захват и освобождение устройств
При работе с устройствами ввода Directlnput применяет технику их захвата (acquire) и освобождения (unacquire). Для того чтобы получать информацию о состоянии устройства, необходимо, чтобы оно находилось в захваченном состоянии. Периодически операционная система сама лишает приложение захваченного устройства и его снова необходимо захватить. Освобождение устройства системой происходит, например, при потере приложением фокуса активности. Microsoft рекомендует действовать следующим образом: при активизации приложения захватывать необходимые устройства, а при потере фокуса активности приложением освобождать их самостоятельно.
Строго говоря, такой подход не является чем-то необычным для любых компонентов DirectX. Напрямую прослеживается аналогия с потерей поверхностей в DirectDraw и звуковых буферов в DirectSound. Только цели механизма захвата устройств несколько другие: приложение должно самостоятельно освободить устройство, прежде чем изменить его свойства. После изменений необходимо заново захватить устройство. Благодаря такому подходу Directlnput не нуждается в постоянной проверке свойств устройства при каждом обращении к нему из программы. Поскольку изменение свойств устройства ввода возможно, лишь когда оно находится в освобожденном состоянии, исключена возможность обращения
298
Урок 10 • Основы использования Directlnput
за данными к устройству, для которого эти свойства не изменены. И Directlnput может рассматривать сведения о свойствах устройства ввода, полученные во время последнего изменения, как достоверные. Учитывая текущие свойства устройства ввода, будет использоваться наиболее оптимальный путь получения данных.
Другой положительной стороной механизма захвата является возможность проверки потери ввода при переключении пользователя на другое приложение. Поскольку при переключении задач происходит освобождение устройства ввода, то приложение сможет узнать об этом, получив соответствующий код ошибки при попытке считать данные.
Устройство ввода можно захватывать несколько раз. Дополнительные захваты не учитываются и происходят очень быстро.
Порядок работы с Directlnput
Последовательность действий при использовании Directlnput для получения пользовательского ввода в упрощенном виде может быть представлена следующими шагами:
О Создание объекта Directlnput (интерфейс IDirectInput7).
О Получение интерфейса требуемого устройства — клавиатуры, мыши, джойстика и т. д. (интерфейс IDirectInputDevice7).
О Установка режима совместного доступа для выбранного устройства.
О Установка формата данных для выбранного устройства.
О В случае работы с буферизированными данными необходимо как минимум задать размер используемого буфера.
О В случае использования оповещений необходимо создать объект ядра «событие» и передать его дескриптор для использования Directlnput.
О После успешного выполнения предыдущих шагов устройство должно быть за-• хвачено для того, чтобы получить возможность считывания данных.
О После успешного захвата устройства ввода можно получать данные от этого устройства либо путем опроса, либо с помощью приема уведомлений.
Как видим, для работы с традиционными устройствами ввода, такими как мышь и клавиатура, достаточно использовать всего два интерфейса: IDirectInput7 и IDirectInputDevice7.
Нет смысла рассматривать эти шаги отдельно от конкретных устройств ввода. Поэтому перечисленные действия будут подробно описаны при рассмотрении этих устройств. Об использовании джойстика мы расскажем в следующем уроке, а принципы работы с клавиатурой и мышью объясним сейчас. К чему немедленно и приступим.
Использование клавиатуры
В качестве первого устройства, на примере которого мы будем рассматривать основные особенности программирования Directlnput, была выбрана клавиатура. Сделано это по причине того, что клавиатура является базовым устройством, без которого немыслим никакой компьютер (хотя в компьютерных играх последних лет клавиатура все больше отступает перед такими средствами управления, как
Базовые возможности Directlnput
299
мышь и джойстик). Другая причина заключается в более простой реализации взаимодействия основной программы и клавиатуры: как правило, применяется непосредственный опрос устройства без буферизации и оповещений. Хотя, конечно, ничто не мешает программисту при работе с клавиатурой использовать буферизированные данные. Применение такого типа данных мы изучим во втором примере этого урока, при рассмотрении работы с мышью.
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.