Home | History | Annotate | Download | only in html
      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&nbsp;--&nbsp;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(&#38;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(&#38;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 >
    995