0
|
1 <HTML
|
|
2 ><HEAD
|
|
3 ><TITLE
|
|
4 >SDL_Event</TITLE
|
|
5 ><META
|
|
6 NAME="GENERATOR"
|
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.61
|
|
8 "><LINK
|
|
9 REL="HOME"
|
|
10 TITLE="SDL Library Documentation"
|
|
11 HREF="index.html"><LINK
|
|
12 REL="UP"
|
|
13 TITLE="SDL Event Structures."
|
|
14 HREF="eventstructures.html"><LINK
|
|
15 REL="PREVIOUS"
|
|
16 TITLE="SDL Event Structures."
|
|
17 HREF="eventstructures.html"><LINK
|
|
18 REL="NEXT"
|
|
19 TITLE="SDL_ActiveEvent"
|
|
20 HREF="sdlactiveevent.html"></HEAD
|
|
21 ><BODY
|
|
22 CLASS="REFENTRY"
|
|
23 BGCOLOR="#FFF8DC"
|
|
24 TEXT="#000000"
|
|
25 LINK="#0000ee"
|
|
26 VLINK="#551a8b"
|
|
27 ALINK="#ff0000"
|
|
28 ><DIV
|
|
29 CLASS="NAVHEADER"
|
|
30 ><TABLE
|
|
31 WIDTH="100%"
|
|
32 BORDER="0"
|
|
33 CELLPADDING="0"
|
|
34 CELLSPACING="0"
|
|
35 ><TR
|
|
36 ><TH
|
|
37 COLSPAN="3"
|
|
38 ALIGN="center"
|
|
39 >SDL Library Documentation</TH
|
|
40 ></TR
|
|
41 ><TR
|
|
42 ><TD
|
|
43 WIDTH="10%"
|
|
44 ALIGN="left"
|
|
45 VALIGN="bottom"
|
|
46 ><A
|
|
47 HREF="eventstructures.html"
|
|
48 >Prev</A
|
|
49 ></TD
|
|
50 ><TD
|
|
51 WIDTH="80%"
|
|
52 ALIGN="center"
|
|
53 VALIGN="bottom"
|
|
54 ></TD
|
|
55 ><TD
|
|
56 WIDTH="10%"
|
|
57 ALIGN="right"
|
|
58 VALIGN="bottom"
|
|
59 ><A
|
|
60 HREF="sdlactiveevent.html"
|
|
61 >Next</A
|
|
62 ></TD
|
|
63 ></TR
|
|
64 ></TABLE
|
|
65 ><HR
|
|
66 ALIGN="LEFT"
|
|
67 WIDTH="100%"></DIV
|
|
68 ><H1
|
|
69 ><A
|
|
70 NAME="SDLEVENT"
|
|
71 >SDL_Event</A
|
|
72 ></H1
|
|
73 ><DIV
|
|
74 CLASS="REFNAMEDIV"
|
|
75 ><A
|
|
76 NAME="AEN3214"
|
|
77 ></A
|
|
78 ><H2
|
|
79 >Name</H2
|
|
80 >SDL_Event -- General event structure</DIV
|
|
81 ><DIV
|
|
82 CLASS="REFSECT1"
|
|
83 ><A
|
|
84 NAME="AEN3217"
|
|
85 ></A
|
|
86 ><H2
|
|
87 >Structure Definition</H2
|
|
88 ><PRE
|
|
89 CLASS="PROGRAMLISTING"
|
|
90 >typedef union{
|
|
91 Uint8 type;
|
|
92 SDL_ActiveEvent active;
|
|
93 SDL_KeyboardEvent key;
|
|
94 SDL_MouseMotionEvent motion;
|
|
95 SDL_MouseButtonEvent button;
|
|
96 SDL_JoyAxisEvent jaxis;
|
|
97 SDL_JoyBallEvent jball;
|
|
98 SDL_JoyHatEvent jhat;
|
|
99 SDL_JoyButtonEvent jbutton;
|
|
100 SDL_ResizeEvent resize;
|
|
101 SDL_QuitEvent quit;
|
|
102 SDL_UserEvent user;
|
|
103 SDL_SywWMEvent syswm;
|
|
104 } SDL_Event;</PRE
|
|
105 ></DIV
|
|
106 ><DIV
|
|
107 CLASS="REFSECT1"
|
|
108 ><A
|
|
109 NAME="AEN3220"
|
|
110 ></A
|
|
111 ><H2
|
|
112 >Structure Data</H2
|
|
113 ><DIV
|
|
114 CLASS="INFORMALTABLE"
|
|
115 ><A
|
|
116 NAME="AEN3222"
|
|
117 ></A
|
|
118 ><P
|
|
119 ></P
|
|
120 ><TABLE
|
|
121 BORDER="0"
|
|
122 CLASS="CALSTABLE"
|
|
123 ><TBODY
|
|
124 ><TR
|
|
125 ><TD
|
|
126 ALIGN="LEFT"
|
|
127 VALIGN="TOP"
|
|
128 ><TT
|
|
129 CLASS="STRUCTFIELD"
|
|
130 ><I
|
|
131 >type</I
|
|
132 ></TT
|
|
133 ></TD
|
|
134 ><TD
|
|
135 ALIGN="LEFT"
|
|
136 VALIGN="TOP"
|
|
137 >The type of event</TD
|
|
138 ></TR
|
|
139 ><TR
|
|
140 ><TD
|
|
141 ALIGN="LEFT"
|
|
142 VALIGN="TOP"
|
|
143 ><TT
|
|
144 CLASS="STRUCTFIELD"
|
|
145 ><I
|
|
146 >active</I
|
|
147 ></TT
|
|
148 ></TD
|
|
149 ><TD
|
|
150 ALIGN="LEFT"
|
|
151 VALIGN="TOP"
|
|
152 ><A
|
|
153 HREF="sdlactiveevent.html"
|
|
154 >Activation event</A
|
|
155 ></TD
|
|
156 ></TR
|
|
157 ><TR
|
|
158 ><TD
|
|
159 ALIGN="LEFT"
|
|
160 VALIGN="TOP"
|
|
161 ><TT
|
|
162 CLASS="STRUCTFIELD"
|
|
163 ><I
|
|
164 >key</I
|
|
165 ></TT
|
|
166 ></TD
|
|
167 ><TD
|
|
168 ALIGN="LEFT"
|
|
169 VALIGN="TOP"
|
|
170 ><A
|
|
171 HREF="sdlkeyboardevent.html"
|
|
172 >Keyboard event</A
|
|
173 ></TD
|
|
174 ></TR
|
|
175 ><TR
|
|
176 ><TD
|
|
177 ALIGN="LEFT"
|
|
178 VALIGN="TOP"
|
|
179 ><TT
|
|
180 CLASS="STRUCTFIELD"
|
|
181 ><I
|
|
182 >motion</I
|
|
183 ></TT
|
|
184 ></TD
|
|
185 ><TD
|
|
186 ALIGN="LEFT"
|
|
187 VALIGN="TOP"
|
|
188 ><A
|
|
189 HREF="sdlmousemotionevent.html"
|
|
190 >Mouse motion event</A
|
|
191 ></TD
|
|
192 ></TR
|
|
193 ><TR
|
|
194 ><TD
|
|
195 ALIGN="LEFT"
|
|
196 VALIGN="TOP"
|
|
197 ><TT
|
|
198 CLASS="STRUCTFIELD"
|
|
199 ><I
|
|
200 >button</I
|
|
201 ></TT
|
|
202 ></TD
|
|
203 ><TD
|
|
204 ALIGN="LEFT"
|
|
205 VALIGN="TOP"
|
|
206 ><A
|
|
207 HREF="sdlmousebuttonevent.html"
|
|
208 >Mouse button event</A
|
|
209 ></TD
|
|
210 ></TR
|
|
211 ><TR
|
|
212 ><TD
|
|
213 ALIGN="LEFT"
|
|
214 VALIGN="TOP"
|
|
215 ><TT
|
|
216 CLASS="STRUCTFIELD"
|
|
217 ><I
|
|
218 >jaxis</I
|
|
219 ></TT
|
|
220 ></TD
|
|
221 ><TD
|
|
222 ALIGN="LEFT"
|
|
223 VALIGN="TOP"
|
|
224 ><A
|
|
225 HREF="sdljoyaxisevent.html"
|
|
226 >Joystick axis motion event</A
|
|
227 ></TD
|
|
228 ></TR
|
|
229 ><TR
|
|
230 ><TD
|
|
231 ALIGN="LEFT"
|
|
232 VALIGN="TOP"
|
|
233 ><TT
|
|
234 CLASS="STRUCTFIELD"
|
|
235 ><I
|
|
236 >jball</I
|
|
237 ></TT
|
|
238 ></TD
|
|
239 ><TD
|
|
240 ALIGN="LEFT"
|
|
241 VALIGN="TOP"
|
|
242 ><A
|
|
243 HREF="sdljoyballevent.html"
|
|
244 >Joystick trackball motion event</A
|
|
245 ></TD
|
|
246 ></TR
|
|
247 ><TR
|
|
248 ><TD
|
|
249 ALIGN="LEFT"
|
|
250 VALIGN="TOP"
|
|
251 ><TT
|
|
252 CLASS="STRUCTFIELD"
|
|
253 ><I
|
|
254 >jhat</I
|
|
255 ></TT
|
|
256 ></TD
|
|
257 ><TD
|
|
258 ALIGN="LEFT"
|
|
259 VALIGN="TOP"
|
|
260 ><A
|
|
261 HREF="sdljoyhatevent.html"
|
|
262 >Joystick hat motion event</A
|
|
263 ></TD
|
|
264 ></TR
|
|
265 ><TR
|
|
266 ><TD
|
|
267 ALIGN="LEFT"
|
|
268 VALIGN="TOP"
|
|
269 ><TT
|
|
270 CLASS="STRUCTFIELD"
|
|
271 ><I
|
|
272 >jbutton</I
|
|
273 ></TT
|
|
274 ></TD
|
|
275 ><TD
|
|
276 ALIGN="LEFT"
|
|
277 VALIGN="TOP"
|
|
278 ><A
|
|
279 HREF="sdljoybuttonevent.html"
|
|
280 >Joystick button event</A
|
|
281 ></TD
|
|
282 ></TR
|
|
283 ><TR
|
|
284 ><TD
|
|
285 ALIGN="LEFT"
|
|
286 VALIGN="TOP"
|
|
287 ><TT
|
|
288 CLASS="STRUCTFIELD"
|
|
289 ><I
|
|
290 >resize</I
|
|
291 ></TT
|
|
292 ></TD
|
|
293 ><TD
|
|
294 ALIGN="LEFT"
|
|
295 VALIGN="TOP"
|
|
296 ><A
|
|
297 HREF="sdlresizeevent.html"
|
|
298 >Application window resize event</A
|
|
299 ></TD
|
|
300 ></TR
|
|
301 ><TR
|
|
302 ><TD
|
|
303 ALIGN="LEFT"
|
|
304 VALIGN="TOP"
|
|
305 ><TT
|
|
306 CLASS="STRUCTFIELD"
|
|
307 ><I
|
|
308 >quit</I
|
|
309 ></TT
|
|
310 ></TD
|
|
311 ><TD
|
|
312 ALIGN="LEFT"
|
|
313 VALIGN="TOP"
|
|
314 ><A
|
|
315 HREF="sdlquitevent.html"
|
|
316 >Application quit request event</A
|
|
317 ></TD
|
|
318 ></TR
|
|
319 ><TR
|
|
320 ><TD
|
|
321 ALIGN="LEFT"
|
|
322 VALIGN="TOP"
|
|
323 ><TT
|
|
324 CLASS="STRUCTFIELD"
|
|
325 ><I
|
|
326 >user</I
|
|
327 ></TT
|
|
328 ></TD
|
|
329 ><TD
|
|
330 ALIGN="LEFT"
|
|
331 VALIGN="TOP"
|
|
332 ><A
|
|
333 HREF="sdluserevent.html"
|
|
334 >User defined event</A
|
|
335 ></TD
|
|
336 ></TR
|
|
337 ><TR
|
|
338 ><TD
|
|
339 ALIGN="LEFT"
|
|
340 VALIGN="TOP"
|
|
341 ><TT
|
|
342 CLASS="STRUCTFIELD"
|
|
343 ><I
|
|
344 >syswm</I
|
|
345 ></TT
|
|
346 ></TD
|
|
347 ><TD
|
|
348 ALIGN="LEFT"
|
|
349 VALIGN="TOP"
|
|
350 ><A
|
|
351 HREF="sdlsyswmevent.html"
|
|
352 >Undefined window manager event</A
|
|
353 ></TD
|
|
354 ></TR
|
|
355 ></TBODY
|
|
356 ></TABLE
|
|
357 ><P
|
|
358 ></P
|
|
359 ></DIV
|
|
360 ></DIV
|
|
361 ><DIV
|
|
362 CLASS="REFSECT1"
|
|
363 ><A
|
|
364 NAME="AEN3289"
|
|
365 ></A
|
|
366 ><H2
|
|
367 >Description</H2
|
|
368 ><P
|
|
369 >The <SPAN
|
|
370 CLASS="STRUCTNAME"
|
|
371 >SDL_Event</SPAN
|
|
372 > union is the core to all event handling is SDL, its probably the most important structure after <SPAN
|
|
373 CLASS="STRUCTNAME"
|
|
374 >SDL_Surface</SPAN
|
|
375 >. <SPAN
|
|
376 CLASS="STRUCTNAME"
|
|
377 >SDL_Event</SPAN
|
|
378 > is a union of all event structures used in SDL, using it is a simple matter of knowing which union member relates to which event <TT
|
|
379 CLASS="STRUCTFIELD"
|
|
380 ><I
|
|
381 >type</I
|
|
382 ></TT
|
|
383 >.</P
|
|
384 ><P
|
|
385 ><DIV
|
|
386 CLASS="INFORMALTABLE"
|
|
387 ><A
|
|
388 NAME="AEN3297"
|
|
389 ></A
|
|
390 ><P
|
|
391 ></P
|
|
392 ><TABLE
|
|
393 BORDER="1"
|
|
394 CLASS="CALSTABLE"
|
|
395 ><THEAD
|
|
396 ><TR
|
|
397 ><TH
|
|
398 ALIGN="LEFT"
|
|
399 VALIGN="TOP"
|
|
400 >Event <TT
|
|
401 CLASS="STRUCTFIELD"
|
|
402 ><I
|
|
403 >type</I
|
|
404 ></TT
|
|
405 ></TH
|
|
406 ><TH
|
|
407 ALIGN="LEFT"
|
|
408 VALIGN="TOP"
|
|
409 >Event Structure</TH
|
|
410 ></TR
|
|
411 ></THEAD
|
|
412 ><TBODY
|
|
413 ><TR
|
|
414 ><TD
|
|
415 ALIGN="LEFT"
|
|
416 VALIGN="MIDDLE"
|
|
417 ><TT
|
|
418 CLASS="LITERAL"
|
|
419 >SDL_ACTIVEEVENT</TT
|
|
420 ></TD
|
|
421 ><TD
|
|
422 ALIGN="LEFT"
|
|
423 VALIGN="MIDDLE"
|
|
424 ><A
|
|
425 HREF="sdlactiveevent.html"
|
|
426 ><SPAN
|
|
427 CLASS="STRUCTNAME"
|
|
428 >SDL_ActiveEvent</SPAN
|
|
429 ></A
|
|
430 ></TD
|
|
431 ></TR
|
|
432 ><TR
|
|
433 ><TD
|
|
434 ALIGN="LEFT"
|
|
435 VALIGN="TOP"
|
|
436 ><TT
|
|
437 CLASS="LITERAL"
|
|
438 >SDL_KEYDOWN/UP</TT
|
|
439 ></TD
|
|
440 ><TD
|
|
441 ALIGN="LEFT"
|
|
442 VALIGN="TOP"
|
|
443 ><A
|
|
444 HREF="sdlkeyboardevent.html"
|
|
445 ><SPAN
|
|
446 CLASS="STRUCTNAME"
|
|
447 >SDL_KeyboardEvent</SPAN
|
|
448 ></A
|
|
449 ></TD
|
|
450 ></TR
|
|
451 ><TR
|
|
452 ><TD
|
|
453 ALIGN="LEFT"
|
|
454 VALIGN="TOP"
|
|
455 ><TT
|
|
456 CLASS="LITERAL"
|
|
457 >SDL_MOUSEMOTION</TT
|
|
458 ></TD
|
|
459 ><TD
|
|
460 ALIGN="LEFT"
|
|
461 VALIGN="TOP"
|
|
462 ><A
|
|
463 HREF="sdlmousemotionevent.html"
|
|
464 ><SPAN
|
|
465 CLASS="STRUCTNAME"
|
|
466 >SDL_MouseMotionEvent</SPAN
|
|
467 ></A
|
|
468 ></TD
|
|
469 ></TR
|
|
470 ><TR
|
|
471 ><TD
|
|
472 ALIGN="LEFT"
|
|
473 VALIGN="TOP"
|
|
474 ><TT
|
|
475 CLASS="LITERAL"
|
|
476 >SDL_MOUSEBUTTONDOWN/UP</TT
|
|
477 ></TD
|
|
478 ><TD
|
|
479 ALIGN="LEFT"
|
|
480 VALIGN="TOP"
|
|
481 ><A
|
|
482 HREF="sdlmousebuttonevent.html"
|
|
483 ><SPAN
|
|
484 CLASS="STRUCTNAME"
|
|
485 >SDL_MouseButtonEvent</SPAN
|
|
486 ></A
|
|
487 ></TD
|
|
488 ></TR
|
|
489 ><TR
|
|
490 ><TD
|
|
491 ALIGN="LEFT"
|
|
492 VALIGN="TOP"
|
|
493 ><TT
|
|
494 CLASS="LITERAL"
|
|
495 >SDL_JOYAXISMOTION</TT
|
|
496 ></TD
|
|
497 ><TD
|
|
498 ALIGN="LEFT"
|
|
499 VALIGN="TOP"
|
|
500 ><A
|
|
501 HREF="sdljoyaxisevent.html"
|
|
502 ><SPAN
|
|
503 CLASS="STRUCTNAME"
|
|
504 >SDL_JoyAxisEvent</SPAN
|
|
505 ></A
|
|
506 ></TD
|
|
507 ></TR
|
|
508 ><TR
|
|
509 ><TD
|
|
510 ALIGN="LEFT"
|
|
511 VALIGN="TOP"
|
|
512 ><TT
|
|
513 CLASS="LITERAL"
|
|
514 >SDL_JOYBALLMOTION</TT
|
|
515 ></TD
|
|
516 ><TD
|
|
517 ALIGN="LEFT"
|
|
518 VALIGN="TOP"
|
|
519 ><A
|
|
520 HREF="sdljoyballevent.html"
|
|
521 ><SPAN
|
|
522 CLASS="STRUCTNAME"
|
|
523 >SDL_JoyBallEvent</SPAN
|
|
524 ></A
|
|
525 ></TD
|
|
526 ></TR
|
|
527 ><TR
|
|
528 ><TD
|
|
529 ALIGN="LEFT"
|
|
530 VALIGN="TOP"
|
|
531 ><TT
|
|
532 CLASS="LITERAL"
|
|
533 >SDL_JOYHATMOTION</TT
|
|
534 ></TD
|
|
535 ><TD
|
|
536 ALIGN="LEFT"
|
|
537 VALIGN="TOP"
|
|
538 ><A
|
|
539 HREF="sdljoyhatevent.html"
|
|
540 ><SPAN
|
|
541 CLASS="STRUCTNAME"
|
|
542 >SDL_JoyHatEvent</SPAN
|
|
543 ></A
|
|
544 ></TD
|
|
545 ></TR
|
|
546 ><TR
|
|
547 ><TD
|
|
548 ALIGN="LEFT"
|
|
549 VALIGN="TOP"
|
|
550 ><TT
|
|
551 CLASS="LITERAL"
|
|
552 >SDL_JOYBUTTONDOWN/UP</TT
|
|
553 ></TD
|
|
554 ><TD
|
|
555 ALIGN="LEFT"
|
|
556 VALIGN="TOP"
|
|
557 ><A
|
|
558 HREF="sdljoybuttonevent.html"
|
|
559 ><SPAN
|
|
560 CLASS="STRUCTNAME"
|
|
561 >SDL_JoyButtonEvent</SPAN
|
|
562 ></A
|
|
563 ></TD
|
|
564 ></TR
|
|
565 ><TR
|
|
566 ><TD
|
|
567 ALIGN="LEFT"
|
|
568 VALIGN="TOP"
|
|
569 ><TT
|
|
570 CLASS="LITERAL"
|
|
571 >SDL_QUIT</TT
|
|
572 ></TD
|
|
573 ><TD
|
|
574 ALIGN="LEFT"
|
|
575 VALIGN="TOP"
|
|
576 ><A
|
|
577 HREF="sdlquitevent.html"
|
|
578 ><SPAN
|
|
579 CLASS="STRUCTNAME"
|
|
580 >SDL_QuitEvent</SPAN
|
|
581 ></A
|
|
582 ></TD
|
|
583 ></TR
|
|
584 ><TR
|
|
585 ><TD
|
|
586 ALIGN="LEFT"
|
|
587 VALIGN="TOP"
|
|
588 ><TT
|
|
589 CLASS="LITERAL"
|
|
590 >SDL_SYSWMEVENT</TT
|
|
591 ></TD
|
|
592 ><TD
|
|
593 ALIGN="LEFT"
|
|
594 VALIGN="TOP"
|
|
595 ><A
|
|
596 HREF="sdlsyswmevent.html"
|
|
597 ><SPAN
|
|
598 CLASS="STRUCTNAME"
|
|
599 >SDL_SysWMEvent</SPAN
|
|
600 ></A
|
|
601 ></TD
|
|
602 ></TR
|
|
603 ><TR
|
|
604 ><TD
|
|
605 ALIGN="LEFT"
|
|
606 VALIGN="TOP"
|
|
607 ><TT
|
|
608 CLASS="LITERAL"
|
|
609 >SDL_VIDEORESIZE</TT
|
|
610 ></TD
|
|
611 ><TD
|
|
612 ALIGN="LEFT"
|
|
613 VALIGN="TOP"
|
|
614 ><A
|
|
615 HREF="sdlresizeevent.html"
|
|
616 ><SPAN
|
|
617 CLASS="STRUCTNAME"
|
|
618 >SDL_ResizeEvent</SPAN
|
|
619 ></A
|
|
620 ></TD
|
|
621 ></TR
|
|
622 ><TR
|
|
623 ><TD
|
|
624 ALIGN="LEFT"
|
|
625 VALIGN="TOP"
|
|
626 ><TT
|
|
627 CLASS="LITERAL"
|
|
628 >SDL_USEREVENT</TT
|
|
629 ></TD
|
|
630 ><TD
|
|
631 ALIGN="LEFT"
|
|
632 VALIGN="TOP"
|
|
633 ><A
|
|
634 HREF="sdluserevent.html"
|
|
635 ><SPAN
|
|
636 CLASS="STRUCTNAME"
|
|
637 >SDL_UserEvent</SPAN
|
|
638 ></A
|
|
639 ></TD
|
|
640 ></TR
|
|
641 ></TBODY
|
|
642 ></TABLE
|
|
643 ><P
|
|
644 ></P
|
|
645 ></DIV
|
|
646 ></P
|
|
647 ></DIV
|
|
648 ><DIV
|
|
649 CLASS="REFSECT1"
|
|
650 ><A
|
|
651 NAME="AEN3377"
|
|
652 ></A
|
|
653 ><H2
|
|
654 >Use</H2
|
|
655 ><P
|
|
656 >The <SPAN
|
|
657 CLASS="STRUCTNAME"
|
|
658 >SDL_Event</SPAN
|
|
659 > structure has two uses</P
|
|
660 ><P
|
|
661 ></P
|
|
662 ><UL
|
|
663 COMPACT="COMPACT"
|
|
664 ><LI
|
|
665 ><P
|
|
666 >Reading events on the event queue</P
|
|
667 ></LI
|
|
668 ><LI
|
|
669 ><P
|
|
670 >Placing events on the event queue</P
|
|
671 ></LI
|
|
672 ></UL
|
|
673 ><P
|
|
674 >Reading events from the event queue is done with either <A
|
|
675 HREF="sdlpollevent.html"
|
|
676 ><TT
|
|
677 CLASS="FUNCTION"
|
|
678 >SDL_PollEvent</TT
|
|
679 ></A
|
|
680 > or <A
|
|
681 HREF="sdlpeepevents.html"
|
|
682 ><TT
|
|
683 CLASS="FUNCTION"
|
|
684 >SDL_PeepEvents</TT
|
|
685 ></A
|
|
686 >. We'll use <TT
|
|
687 CLASS="FUNCTION"
|
|
688 >SDL_PollEvent</TT
|
|
689 > and step through an example.</P
|
|
690 ><P
|
|
691 >First off, we create an empty <SPAN
|
|
692 CLASS="STRUCTNAME"
|
|
693 >SDL_Event</SPAN
|
|
694 > structure.
|
|
695 <PRE
|
|
696 CLASS="PROGRAMLISTING"
|
|
697 >SDL_Event test_event;</PRE
|
|
698 >
|
|
699 <TT
|
|
700 CLASS="FUNCTION"
|
|
701 >SDL_PollEvent</TT
|
|
702 > removes the next event from the event queue, if there are no events on the queue it returns <SPAN
|
|
703 CLASS="RETURNVALUE"
|
|
704 >0</SPAN
|
|
705 > otherwise it returns <SPAN
|
|
706 CLASS="RETURNVALUE"
|
|
707 >1</SPAN
|
|
708 >. We use a <TT
|
|
709 CLASS="FUNCTION"
|
|
710 >while</TT
|
|
711 > loop to process each event in turn.
|
|
712 <PRE
|
|
713 CLASS="PROGRAMLISTING"
|
|
714 >while(SDL_PollEvent(&test_event)) {</PRE
|
|
715 >
|
|
716 The <TT
|
|
717 CLASS="FUNCTION"
|
|
718 >SDL_PollEvent</TT
|
|
719 > function take a pointer to an <SPAN
|
|
720 CLASS="STRUCTNAME"
|
|
721 >SDL_Event</SPAN
|
|
722 > structure that is to be filled with event information. We know that if <TT
|
|
723 CLASS="FUNCTION"
|
|
724 >SDL_PollEvent</TT
|
|
725 > removes an event from the queue then the event information will be placed in our <SPAN
|
|
726 CLASS="STRUCTNAME"
|
|
727 >test_event</SPAN
|
|
728 > structure, but we also know that the <I
|
|
729 CLASS="EMPHASIS"
|
|
730 >type</I
|
|
731 > of event will be placed in the <TT
|
|
732 CLASS="STRUCTFIELD"
|
|
733 ><I
|
|
734 >type</I
|
|
735 ></TT
|
|
736 > member of <SPAN
|
|
737 CLASS="STRUCTNAME"
|
|
738 >test_event</SPAN
|
|
739 >. So to handle each event <TT
|
|
740 CLASS="STRUCTFIELD"
|
|
741 ><I
|
|
742 >type</I
|
|
743 ></TT
|
|
744 > seperately we use a <TT
|
|
745 CLASS="FUNCTION"
|
|
746 >switch</TT
|
|
747 > statement.
|
|
748 <PRE
|
|
749 CLASS="PROGRAMLISTING"
|
|
750 > switch(test_event.type) {</PRE
|
|
751 >
|
|
752 We need to know what kind of events we're looking for <I
|
|
753 CLASS="EMPHASIS"
|
|
754 >and</I
|
|
755 > the event <TT
|
|
756 CLASS="STRUCTFIELD"
|
|
757 ><I
|
|
758 >type</I
|
|
759 ></TT
|
|
760 >'s of those events. So lets assume we want to detect where the user is moving the mouse pointer within our application. We look through our event types and notice that <TT
|
|
761 CLASS="LITERAL"
|
|
762 >SDL_MOUSEMOTION</TT
|
|
763 > is, more than likely, the event we're looking for. A little <A
|
|
764 HREF="sdlmousemotionevent.html"
|
|
765 >more</A
|
|
766 > research tells use that <TT
|
|
767 CLASS="LITERAL"
|
|
768 >SDL_MOUSEMOTION</TT
|
|
769 > events are handled within the <A
|
|
770 HREF="sdlmousemotionevent.html"
|
|
771 ><SPAN
|
|
772 CLASS="STRUCTNAME"
|
|
773 >SDL_MouseMotionEvent</SPAN
|
|
774 ></A
|
|
775 > structure which is the <TT
|
|
776 CLASS="STRUCTFIELD"
|
|
777 ><I
|
|
778 >motion</I
|
|
779 ></TT
|
|
780 > member of <SPAN
|
|
781 CLASS="STRUCTNAME"
|
|
782 >SDL_Event</SPAN
|
|
783 >. We can check for the <TT
|
|
784 CLASS="LITERAL"
|
|
785 >SDL_MOUSEMOTION</TT
|
|
786 > event <TT
|
|
787 CLASS="STRUCTFIELD"
|
|
788 ><I
|
|
789 >type</I
|
|
790 ></TT
|
|
791 > within our <TT
|
|
792 CLASS="FUNCTION"
|
|
793 >switch</TT
|
|
794 > statement like so:
|
|
795 <PRE
|
|
796 CLASS="PROGRAMLISTING"
|
|
797 > case SDL_MOUSEMOTION:</PRE
|
|
798 >
|
|
799 All we need do now is read the information out of the <TT
|
|
800 CLASS="STRUCTFIELD"
|
|
801 ><I
|
|
802 >motion</I
|
|
803 ></TT
|
|
804 > member of <SPAN
|
|
805 CLASS="STRUCTNAME"
|
|
806 >test_event</SPAN
|
|
807 >.
|
|
808 <PRE
|
|
809 CLASS="PROGRAMLISTING"
|
|
810 > printf("We got a motion event.\n");
|
|
811 printf("Current mouse position is: (%d, %d)\n", test_event.motion.x, test_event.motion.y);
|
|
812 break;
|
|
813 default:
|
|
814 printf("Unhandled Event!\n");
|
|
815 break;
|
|
816 }
|
|
817 }
|
|
818 printf("Event queue empty.\n");</PRE
|
|
819 ></P
|
|
820 ><P
|
|
821 >It is also possible to push events onto the event queue and so use it as a two-way communication path. Both <A
|
|
822 HREF="sdlpushevent.html"
|
|
823 ><TT
|
|
824 CLASS="FUNCTION"
|
|
825 >SDL_PushEvent</TT
|
|
826 ></A
|
|
827 > and <A
|
|
828 HREF="sdlpeepevents.html"
|
|
829 ><TT
|
|
830 CLASS="FUNCTION"
|
|
831 >SDL_PeepEvents</TT
|
|
832 ></A
|
|
833 > allow you to place events onto the event queue. This is usually used to place a <TT
|
|
834 CLASS="LITERAL"
|
|
835 >SDL_USEREVENT</TT
|
|
836 > on the event queue, however you could use it to post fake input events if you wished. Creating your own events is a simple matter of choosing the event type you want, setting the <TT
|
|
837 CLASS="STRUCTFIELD"
|
|
838 ><I
|
|
839 >type</I
|
|
840 ></TT
|
|
841 > member and filling the appropriate member structure with information.
|
|
842 <PRE
|
|
843 CLASS="PROGRAMLISTING"
|
|
844 >SDL_Event user_event;
|
|
845
|
|
846 user_event.type=SDL_USEREVENT;
|
|
847 user_event.user.code=2;
|
|
848 user_event.user.data1=NULL;
|
|
849 user_event.user.data2=NULL;
|
|
850 SDL_PushEvent(&user_event);</PRE
|
|
851 ></P
|
|
852 ></DIV
|
|
853 ><DIV
|
|
854 CLASS="REFSECT1"
|
|
855 ><A
|
|
856 NAME="AEN3434"
|
|
857 ></A
|
|
858 ><H2
|
|
859 >See Also</H2
|
|
860 ><P
|
|
861 ><A
|
|
862 HREF="sdlpollevent.html"
|
|
863 ><TT
|
|
864 CLASS="FUNCTION"
|
|
865 >SDL_PollEvent</TT
|
|
866 ></A
|
|
867 >,
|
|
868 <A
|
|
869 HREF="sdlpushevent.html"
|
|
870 ><TT
|
|
871 CLASS="FUNCTION"
|
|
872 >SDL_PushEvent</TT
|
|
873 ></A
|
|
874 >,
|
|
875 <A
|
|
876 HREF="sdlpeepevents.html"
|
|
877 ><TT
|
|
878 CLASS="FUNCTION"
|
|
879 >SDL_PeepEvents</TT
|
|
880 ></A
|
|
881 ></P
|
|
882 ></DIV
|
|
883 ><DIV
|
|
884 CLASS="NAVFOOTER"
|
|
885 ><HR
|
|
886 ALIGN="LEFT"
|
|
887 WIDTH="100%"><TABLE
|
|
888 WIDTH="100%"
|
|
889 BORDER="0"
|
|
890 CELLPADDING="0"
|
|
891 CELLSPACING="0"
|
|
892 ><TR
|
|
893 ><TD
|
|
894 WIDTH="33%"
|
|
895 ALIGN="left"
|
|
896 VALIGN="top"
|
|
897 ><A
|
|
898 HREF="eventstructures.html"
|
|
899 >Prev</A
|
|
900 ></TD
|
|
901 ><TD
|
|
902 WIDTH="34%"
|
|
903 ALIGN="center"
|
|
904 VALIGN="top"
|
|
905 ><A
|
|
906 HREF="index.html"
|
|
907 >Home</A
|
|
908 ></TD
|
|
909 ><TD
|
|
910 WIDTH="33%"
|
|
911 ALIGN="right"
|
|
912 VALIGN="top"
|
|
913 ><A
|
|
914 HREF="sdlactiveevent.html"
|
|
915 >Next</A
|
|
916 ></TD
|
|
917 ></TR
|
|
918 ><TR
|
|
919 ><TD
|
|
920 WIDTH="33%"
|
|
921 ALIGN="left"
|
|
922 VALIGN="top"
|
|
923 >SDL Event Structures.</TD
|
|
924 ><TD
|
|
925 WIDTH="34%"
|
|
926 ALIGN="center"
|
|
927 VALIGN="top"
|
|
928 ><A
|
|
929 HREF="eventstructures.html"
|
|
930 >Up</A
|
|
931 ></TD
|
|
932 ><TD
|
|
933 WIDTH="33%"
|
|
934 ALIGN="right"
|
|
935 VALIGN="top"
|
|
936 >SDL_ActiveEvent</TD
|
|
937 ></TR
|
|
938 ></TABLE
|
|
939 ></DIV
|
|
940 ></BODY
|
|
941 ></HTML
|
|
942 > |