home *** CD-ROM | disk | FTP | other *** search
- <HTML
- ><HEAD
- ><TITLE
- >Event Examples</TITLE
- ><META
- NAME="GENERATOR"
- CONTENT="Modular DocBook HTML Stylesheet Version 1.64
- "><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="AEN408"
- >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
- >