Zpracování zpráv joysticku

[Funkce přidružená k této stránce, Joysticks, je starší funkce. Je nahrazen Oborem názvů Windows.Gaming.Input. Jmenný prostor Windows.Gaming.Input byl optimalizován pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal Windows.Gaming.Input namespace místo Joysticks, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Následující příklad ukazuje, jak může aplikace reagovat na pohyby joysticku a změny ve stavech tlačítka. Když joystick změní pozici, aplikace přesune kurzor a pokud je některé z tlačítek stisknuto, nakreslí na pracovní ploše díru po kulce. Když je tlačítko joysticku stisknuto, aplikace nakreslí díru na ploše a přehraje zvuk nepřetržitě, dokud se tlačítko uvolní. Zprávy, které je třeba sledovat, jsou MM_JOY1MOVE, MM_JOY1BUTTONDOWNa 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;