Mercurial > sdl-ios-xcode
diff docs/html/guideeventexamples.html @ 0:74212992fb08
Initial revision
author | Sam Lantinga <slouken@lokigames.com> |
---|---|
date | Thu, 26 Apr 2001 16:45:43 +0000 |
parents | |
children | 55f1f1b3e27d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/guideeventexamples.html Thu Apr 26 16:45:43 2001 +0000 @@ -0,0 +1,239 @@ +<HTML +><HEAD +><TITLE +>Event Examples</TITLE +><META +NAME="GENERATOR" +CONTENT="Modular DocBook HTML Stylesheet Version 1.61 +"><LINK +REL="HOME" +TITLE="SDL Library Documentation" +HREF="index.html"><LINK +REL="UP" +TITLE="Examples" +HREF="guideexamples.html"><LINK +REL="PREVIOUS" +TITLE="Video Examples" +HREF="guidevideoexamples.html"><LINK +REL="NEXT" +TITLE="Audio Examples" +HREF="guideaudioexamples.html"></HEAD +><BODY +CLASS="SECT1" +BGCOLOR="#FFF8DC" +TEXT="#000000" +LINK="#0000ee" +VLINK="#551a8b" +ALINK="#ff0000" +><DIV +CLASS="NAVHEADER" +><TABLE +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TH +COLSPAN="3" +ALIGN="center" +>SDL Library Documentation</TH +></TR +><TR +><TD +WIDTH="10%" +ALIGN="left" +VALIGN="bottom" +><A +HREF="guidevideoexamples.html" +>Prev</A +></TD +><TD +WIDTH="80%" +ALIGN="center" +VALIGN="bottom" +>Chapter 4. Examples</TD +><TD +WIDTH="10%" +ALIGN="right" +VALIGN="bottom" +><A +HREF="guideaudioexamples.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="GUIDEEVENTEXAMPLES" +>Event Examples</A +></H1 +><P +></P +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN336" +>Filtering and Handling Events</A +></H2 +><P +><PRE +CLASS="PROGRAMLISTING" +>#include <stdio.h> +#include <stdlib.h> + +#include "SDL.h" + +/* This function may run in a separate event thread */ +int FilterEvents(const SDL_Event *event) { + static int boycott = 1; + + /* This quit event signals the closing of the window */ + if ( (event->type == SDL_QUIT) && boycott ) { + printf("Quit event filtered out -- try again.\n"); + boycott = 0; + return(0); + } + if ( event->type == SDL_MOUSEMOTION ) { + printf("Mouse moved to (%d,%d)\n", + event->motion.x, event->motion.y); + return(0); /* Drop it, we've handled it */ + } + return(1); +} + +int main(int argc, char *argv[]) +{ + SDL_Event event; + + /* Initialize the SDL library (starts the event loop) */ + if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { + fprintf(stderr, + "Couldn't initialize SDL: %s\n", SDL_GetError()); + exit(1); + } + + /* Clean up on exit, exit on window close and interrupt */ + atexit(SDL_Quit); + + /* Ignore key events */ + SDL_EventState(SDL_KEYDOWN, SDL_IGNORE); + SDL_EventState(SDL_KEYUP, SDL_IGNORE); + + /* Filter quit and mouse motion events */ + SDL_SetEventFilter(FilterEvents); + + /* The mouse isn't much use unless we have a display for reference */ + if ( SDL_SetVideoMode(640, 480, 8, 0) == NULL ) { + fprintf(stderr, "Couldn't set 640x480x8 video mode: %s\n", + SDL_GetError()); + exit(1); + } + + /* Loop waiting for ESC+Mouse_Button */ + while ( SDL_WaitEvent(&event) >= 0 ) { + switch (event.type) { + case SDL_ACTIVEEVENT: { + if ( event.active.state & SDL_APPACTIVE ) { + if ( event.active.gain ) { + printf("App activated\n"); + } else { + printf("App iconified\n"); + } + } + } + break; + + case SDL_MOUSEBUTTONDOWN: { + Uint8 *keys; + + keys = SDL_GetKeyState(NULL); + if ( keys[SDLK_ESCAPE] == SDL_PRESSED ) { + printf("Bye bye...\n"); + exit(0); + } + printf("Mouse button pressed\n"); + } + break; + + case SDL_QUIT: { + printf("Quit requested, quitting.\n"); + exit(0); + } + break; + } + } + /* This should never happen */ + printf("SDL_WaitEvent error: %s\n", SDL_GetError()); + exit(1); +}</PRE +></P +></DIV +></DIV +><DIV +CLASS="NAVFOOTER" +><HR +ALIGN="LEFT" +WIDTH="100%"><TABLE +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +><A +HREF="guidevideoexamples.html" +>Prev</A +></TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="index.html" +>Home</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +><A +HREF="guideaudioexamples.html" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +>Video Examples</TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="guideexamples.html" +>Up</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +>Audio Examples</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file