Поделиться через


Обработка сообщений от джойстика

[Функция, связанная с этой страницей, Джойстики, является устаревшей функцией. Он был заменен пространство имен 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;