Графика для Windows средствами DirectDraw

       

Захват клавиатуры


Итак, мы инициализировали 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().



Содержание раздела