[Zurück]
Inhaltsverzeichnis
[Weiter]
Verwendung der "Simple DirectMedia Layer"-API
Ereignisse
Auf Ereignisse wartet man mit der Funktion SDL_WaitEvent().
|
Tip:
SDL unterstützt internationale Tastaturen. Es übersetzt
Tastatur-Ereignisse und legt die Unicode-Äquivalente in
event.key.keysym.unicode ab. Weil das ein bisschen Zeit kostet,
muß es erst mit SDL_EnableUNICODE() eingeschaltet werden. |
Beispiel:
{
SDL_Event ereignis;
SDL_WaitEvent(&ereignis);
switch (ereignis.type) {
case SDL_KEYDOWN:
printf("Die Taste '%s' wurde gedrückt!\n",
SDL_GetKeyName(ereignis.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
- Ereignisse abfragen (Polling)
Mit der Funktion SDL_PollEvent() werden Ereignisse abgefragt.
|
Tip:
Man kann einen Blick auf die Ereignisse in der Queue werfen, ohne
sie daraus zu entfernen, indem man SDL_PEEKEVENT an SDL_PeepEvents()
übergibt. |
Beispiel:
{
SDL_Event ereignis;
while ( SDL_PollEvent(&ereignis) ) {
switch (ereignis.type) {
case SDL_MOUSEMOTION:
printf("Die Maus wurde um %d,%d Pixel nach (%d,%d) bewegt.\n",
ereignis.motion.xrel, ereignis.motion.yrel,
ereignis.motion.x, ereignis.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("Die Maustaste Nummer %d wurde bei (%d,%d) gedrückt.\n",
ereignis.button.button, ereignis.button.x, ereignis.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
- Ereignis-Zustand abfragen
Zusätzlich zu der direkten Behandlung hat jeder Ereignistyp
eine Funktion, in der der Ereignis-Zustand des Programms
abgefragt werden kann. Wenn nur diese Methode verwendet wird,
sollten mit der Funktion SDL_EventState() alle Ereignisse
ignoriert und nur mit SDL_PumpEvents() weitergeleitet werden.
|
Tip:
Mit SDL_ShowCursor() kann der Mauszeiger des Systems versteckt werden. |
Beispiel:
{
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
}
void MausOrtPruefen(void)
{
int maus_x, maus_y;
SDL_PumpEvents();
SDL_GetMouseState(&maus_x, &maus_y);
if ( (maus_x < 32) && (maus_y < 32) ) {
printf("Die Maus ist in der linken oberen Ecke!\n");
}
}
|
[Zurück]
Inhaltsverzeichnis
[Weiter]
|