Обработка сообщений от джойстика
[Функция, связанная с этой страницей, Джойстики, является устаревшей функцией. Он был заменен пространство имен Windows.Gaming.Input. пространство имен Windows.Gaming.Input оптимизировано для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код пространства имен Windows.Gaming.Input вместо джойстиков, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
В следующем примере показано, как приложение может реагировать на движения джойстика и изменения в состояниях кнопки. Когда джойстик изменяет положение, приложение перемещает курсор и, если нажата любая кнопка, рисует на рабочем столе отверстие маркера. При нажатии кнопки джойстика приложение рисует отверстие на рабочем столе и постоянно воспроизводит звук, пока кнопка не будет освобождена. Отслеживаемые сообщения MM_JOY1MOVE, MM_JOY1BUTTONDOWNи MM_JOY1BUTTONUP.
case MM_JOY1MOVE : // changed position
if((UINT) wParam & (JOY_BUTTON1 | JOY_BUTTON2))
DrawFire(hWnd);
DrawSight(lParam); // calculates new cursor position
break;
case MM_JOY1BUTTONDOWN : // button is down
if((UINT) wParam & JOY_BUTTON1)
{
PlaySound(lpButton1, SND_LOOP | SND_ASYNC | SND_MEMORY);
DrawFire(hWnd);
}
else if((UINT) wParam & JOY_BUTTON2)
{
PlaySound(lpButton2, SND_ASYNC | SND_MEMORY | SND_LOOP);
DrawFire(hWnd);
}
break;
case MM_JOY1BUTTONUP : // button is up
sndPlaySound(NULL, 0); // stops the sound
break;