SDL-1.2.14
[sdl_omap.git] / docs / html / guideeventexamples.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Event Examples</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
12 REL="UP"
13 TITLE="Examples"
14 HREF="guideexamples.html"><LINK
15 REL="PREVIOUS"
16 TITLE="Examples"
17 HREF="guideexamples.html"><LINK
18 REL="NEXT"
19 TITLE="Audio Examples"
20 HREF="guideaudioexamples.html"></HEAD
21 ><BODY
22 CLASS="SECT1"
23 BGCOLOR="#FFF8DC"
24 TEXT="#000000"
25 LINK="#0000ee"
26 VLINK="#551a8b"
27 ALINK="#ff0000"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >SDL Library Documentation</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="guideexamples.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 >Chapter 4. Examples</TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="guideaudioexamples.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><DIV
72 CLASS="SECT1"
73 ><H1
74 CLASS="SECT1"
75 ><A
76 NAME="GUIDEEVENTEXAMPLES"
77 ></A
78 >Event Examples</H1
79 ><P
80 ></P
81 ><DIV
82 CLASS="SECT2"
83 ><H2
84 CLASS="SECT2"
85 ><A
86 NAME="AEN375"
87 ></A
88 >Filtering and Handling Events</H2
89 ><P
90 ><PRE
91 CLASS="PROGRAMLISTING"
92 >#include &#60;stdio.h&#62;
93 #include &#60;stdlib.h&#62;
94
95 #include "SDL.h"
96
97 /* This function may run in a separate event thread */
98 int FilterEvents(const SDL_Event *event) {
99     static int boycott = 1;
100
101     /* This quit event signals the closing of the window */
102     if ( (event-&#62;type == SDL_QUIT) &#38;&#38; boycott ) {
103         printf("Quit event filtered out -- try again.\n");
104         boycott = 0;
105         return(0);
106     }
107     if ( event-&#62;type == SDL_MOUSEMOTION ) {
108         printf("Mouse moved to (%d,%d)\n",
109                 event-&#62;motion.x, event-&#62;motion.y);
110         return(0);    /* Drop it, we've handled it */
111     }
112     return(1);
113 }
114
115 int main(int argc, char *argv[])
116 {
117     SDL_Event event;
118
119     /* Initialize the SDL library (starts the event loop) */
120     if ( SDL_Init(SDL_INIT_VIDEO) &#60; 0 ) {
121         fprintf(stderr,
122                 "Couldn't initialize SDL: %s\n", SDL_GetError());
123         exit(1);
124     }
125
126     /* Clean up on exit, exit on window close and interrupt */
127     atexit(SDL_Quit);
128
129     /* Ignore key events */
130     SDL_EventState(SDL_KEYDOWN, SDL_IGNORE);
131     SDL_EventState(SDL_KEYUP, SDL_IGNORE);
132
133     /* Filter quit and mouse motion events */
134     SDL_SetEventFilter(FilterEvents);
135
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",
139                         SDL_GetError());
140         exit(1);
141     }
142
143     /* Loop waiting for ESC+Mouse_Button */
144     while ( SDL_WaitEvent(&#38;event) &#62;= 0 ) {
145         switch (event.type) {
146             case SDL_ACTIVEEVENT: {
147                 if ( event.active.state &#38; SDL_APPACTIVE ) {
148                     if ( event.active.gain ) {
149                         printf("App activated\n");
150                     } else {
151                         printf("App iconified\n");
152                     }
153                 }
154             }
155             break;
156                     
157             case SDL_MOUSEBUTTONDOWN: {
158                 Uint8 *keys;
159
160                 keys = SDL_GetKeyState(NULL);
161                 if ( keys[SDLK_ESCAPE] == SDL_PRESSED ) {
162                     printf("Bye bye...\n");
163                     exit(0);
164                 }
165                 printf("Mouse button pressed\n");
166             }
167             break;
168
169             case SDL_QUIT: {
170                 printf("Quit requested, quitting.\n");
171                 exit(0);
172             }
173             break;
174         }
175     }
176     /* This should never happen */
177     printf("SDL_WaitEvent error: %s\n", SDL_GetError());
178     exit(1);
179 }</PRE
180 ></P
181 ></DIV
182 ></DIV
183 ><DIV
184 CLASS="NAVFOOTER"
185 ><HR
186 ALIGN="LEFT"
187 WIDTH="100%"><TABLE
188 SUMMARY="Footer navigation table"
189 WIDTH="100%"
190 BORDER="0"
191 CELLPADDING="0"
192 CELLSPACING="0"
193 ><TR
194 ><TD
195 WIDTH="33%"
196 ALIGN="left"
197 VALIGN="top"
198 ><A
199 HREF="guideexamples.html"
200 ACCESSKEY="P"
201 >Prev</A
202 ></TD
203 ><TD
204 WIDTH="34%"
205 ALIGN="center"
206 VALIGN="top"
207 ><A
208 HREF="index.html"
209 ACCESSKEY="H"
210 >Home</A
211 ></TD
212 ><TD
213 WIDTH="33%"
214 ALIGN="right"
215 VALIGN="top"
216 ><A
217 HREF="guideaudioexamples.html"
218 ACCESSKEY="N"
219 >Next</A
220 ></TD
221 ></TR
222 ><TR
223 ><TD
224 WIDTH="33%"
225 ALIGN="left"
226 VALIGN="top"
227 >Examples</TD
228 ><TD
229 WIDTH="34%"
230 ALIGN="center"
231 VALIGN="top"
232 ><A
233 HREF="guideexamples.html"
234 ACCESSKEY="U"
235 >Up</A
236 ></TD
237 ><TD
238 WIDTH="33%"
239 ALIGN="right"
240 VALIGN="top"
241 >Audio Examples</TD
242 ></TR
243 ></TABLE
244 ></DIV
245 ></BODY
246 ></HTML
247 >