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