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