Traitement des messages du joystick
L’exemple suivant illustre comment une application peut répondre aux mouvements du joystick et aux changements dans les états du bouton. Lorsque le joystick change de position, l’application déplace le curseur et, si l’un ou l’autre bouton est enfoncé, dessine un trou de balle sur le bureau. Quand un bouton du joystick est enfoncé, l’application dessine un trou sur le bureau et diffuse un son en continu jusqu’à ce qu’un bouton soit relâché. Les messages à watch sont MM_JOY1MOVE, MM_JOY1BUTTONDOWN et 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;