7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
14 HREF="guideexamples.html"><LINK
17 HREF="guideexamples.html"><LINK
19 TITLE="Audio Examples"
20 HREF="guideaudioexamples.html"></HEAD
31 SUMMARY="Header navigation table"
40 >SDL Library Documentation</TH
48 HREF="guideexamples.html"
56 >Chapter 4. Examples</TD
62 HREF="guideaudioexamples.html"
76 NAME="GUIDEEVENTEXAMPLES"
88 >Filtering and Handling Events</H2
91 CLASS="PROGRAMLISTING"
92 >#include <stdio.h>
93 #include <stdlib.h>
97 /* This function may run in a separate event thread */
98 int FilterEvents(const SDL_Event *event) {
99 static int boycott = 1;
101 /* This quit event signals the closing of the window */
102 if ( (event->type == SDL_QUIT) && boycott ) {
103 printf("Quit event filtered out -- try again.\n");
107 if ( event->type == SDL_MOUSEMOTION ) {
108 printf("Mouse moved to (%d,%d)\n",
109 event->motion.x, event->motion.y);
110 return(0); /* Drop it, we've handled it */
115 int main(int argc, char *argv[])
119 /* Initialize the SDL library (starts the event loop) */
120 if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
122 "Couldn't initialize SDL: %s\n", SDL_GetError());
126 /* Clean up on exit, exit on window close and interrupt */
129 /* Ignore key events */
130 SDL_EventState(SDL_KEYDOWN, SDL_IGNORE);
131 SDL_EventState(SDL_KEYUP, SDL_IGNORE);
133 /* Filter quit and mouse motion events */
134 SDL_SetEventFilter(FilterEvents);
136 /* The mouse isn't much use unless we have a display for reference */
137 if ( SDL_SetVideoMode(640, 480, 8, 0) == NULL ) {
138 fprintf(stderr, "Couldn't set 640x480x8 video mode: %s\n",
143 /* Loop waiting for ESC+Mouse_Button */
144 while ( SDL_WaitEvent(&event) >= 0 ) {
145 switch (event.type) {
146 case SDL_ACTIVEEVENT: {
147 if ( event.active.state & SDL_APPACTIVE ) {
148 if ( event.active.gain ) {
149 printf("App activated\n");
151 printf("App iconified\n");
157 case SDL_MOUSEBUTTONDOWN: {
160 keys = SDL_GetKeyState(NULL);
161 if ( keys[SDLK_ESCAPE] == SDL_PRESSED ) {
162 printf("Bye bye...\n");
165 printf("Mouse button pressed\n");
170 printf("Quit requested, quitting.\n");
176 /* This should never happen */
177 printf("SDL_WaitEvent error: %s\n", SDL_GetError());
188 SUMMARY="Footer navigation table"
199 HREF="guideexamples.html"
217 HREF="guideaudioexamples.html"
233 HREF="guideexamples.html"