Захват клавиатуры
Итак, мы инициализировали DirectInput и подготовили клавиатуру к работе; теперь необходимо захватить ее. Для этой цели используется функция
OnActivate(), потому что клавиатуру приходится захватывать при каждой активизации нашего приложения. Функция
OnActivate() выглядит так:
void QwertyWin::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) { DirectDrawWin::OnActivate(nState, pWndOther, bMinimized); if (nState!=WA_INACTIVE && keyboard) { TRACE("keyboard->Acquire()\n"); keyboard->Acquire(); } }
|
После вызова версии
OnActivate() базового класса мы проверяем, происходит ли активизация приложения (функция
OnActivate() вызывается и в случае деактивизации, когда активным становится другое приложение). Если проверка дает положительный результат, мы вызываем функцию
Acquire() интерфейса
DirectInputDevice.
Перед вызовом
Acquire() можно проверить, не была ли клавиатура захвачена ранее, но в этом нет необходимости. DirectInput игнорирует лишние вызовы функции
Acquire().
Содержание Назад Вперед