SDL_Event.3
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:6k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. .TH "SDL_Event" "3" "Tue 11 Sep 2001, 22:59" "SDL" "SDL API Reference" 
  2. .SH "NAME"
  3. SDL_Event- General event structure
  4. .SH "STRUCTURE DEFINITION"
  5. .PP
  6. .nf
  7. f(CWtypedef union{
  8.   Uint8 type;
  9.   SDL_ActiveEvent active;
  10.   SDL_KeyboardEvent key;
  11.   SDL_MouseMotionEvent motion;
  12.   SDL_MouseButtonEvent button;
  13.   SDL_JoyAxisEvent jaxis;
  14.   SDL_JoyBallEvent jball;
  15.   SDL_JoyHatEvent jhat;
  16.   SDL_JoyButtonEvent jbutton;
  17.   SDL_ResizeEvent resize;
  18.   SDL_ExposeEvent expose;
  19.   SDL_QuitEvent quit;
  20.   SDL_UserEvent user;
  21.   SDL_SywWMEvent syswm;
  22. } SDL_Event;fR
  23. .fi
  24. .PP
  25. .SH "STRUCTURE DATA"
  26. .TP 20
  27. fBtypefR
  28. The type of event
  29. .TP 20
  30. fBactivefR
  31. fIActivation eventfR
  32. .TP 20
  33. fBkeyfR
  34. fIKeyboard eventfR
  35. .TP 20
  36. fBmotionfR
  37. fIMouse motion eventfR
  38. .TP 20
  39. fBbuttonfR
  40. fIMouse button eventfR
  41. .TP 20
  42. fBjaxisfR
  43. fIJoystick axis motion eventfR
  44. .TP 20
  45. fBjballfR
  46. fIJoystick trackball motion eventfR
  47. .TP 20
  48. fBjhatfR
  49. fIJoystick hat motion eventfR
  50. .TP 20
  51. fBjbuttonfR
  52. fIJoystick button eventfR
  53. .TP 20
  54. fBresizefR
  55. fIApplication window resize eventfR
  56. .TP 20
  57. fBexposefR
  58. fIApplication window expose eventfR
  59. .TP 20
  60. fBquitfR
  61. fIApplication quit request eventfR
  62. .TP 20
  63. fBuserfR
  64. fIUser defined eventfR
  65. .TP 20
  66. fBsyswmfR
  67. fIUndefined window manager eventfR
  68. .SH "DESCRIPTION"
  69. .PP
  70. The fBSDL_EventfR union is the core to all event handling is SDL, its probably the most important structure after fBSDL_SurfacefR&. fBSDL_EventfR 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 fBtypefR&.
  71. .PP
  72. .TP 20
  73. fBEvent fBtypefRfR
  74. fBEvent StructurefR
  75. .TP 20
  76. fBSDL_ACTIVEEVENTfP
  77. fIfBSDL_ActiveEventfRfR
  78. .TP 20
  79. fBSDL_KEYDOWN/UPfP
  80. fIfBSDL_KeyboardEventfRfR
  81. .TP 20
  82. fBSDL_MOUSEMOTIONfP
  83. fIfBSDL_MouseMotionEventfRfR
  84. .TP 20
  85. fBSDL_MOUSEBUTTONDOWN/UPfP
  86. fIfBSDL_MouseButtonEventfRfR
  87. .TP 20
  88. fBSDL_JOYAXISMOTIONfP
  89. fIfBSDL_JoyAxisEventfRfR
  90. .TP 20
  91. fBSDL_JOYBALLMOTIONfP
  92. fIfBSDL_JoyBallEventfRfR
  93. .TP 20
  94. fBSDL_JOYHATMOTIONfP
  95. fIfBSDL_JoyHatEventfRfR
  96. .TP 20
  97. fBSDL_JOYBUTTONDOWN/UPfP
  98. fIfBSDL_JoyButtonEventfRfR
  99. .TP 20
  100. fBSDL_QUITfP
  101. fIfBSDL_QuitEventfRfR
  102. .TP 20
  103. fBSDL_SYSWMEVENTfP
  104. fIfBSDL_SysWMEventfRfR
  105. .TP 20
  106. fBSDL_VIDEORESIZEfP
  107. fIfBSDL_ResizeEventfRfR
  108. .TP 20
  109. fBSDL_VIDEOEXPOSEfP
  110. fIfBSDL_ExposeEventfRfR
  111. .TP 20
  112. fBSDL_USEREVENTfP
  113. fIfBSDL_UserEventfRfR
  114. .SH "USE"
  115. .PP
  116. The fBSDL_EventfR structure has two uses
  117. .IP "   (bu" 6
  118. Reading events on the event queue
  119. .IP "   (bu" 6
  120. Placing events on the event queue
  121. .PP
  122. Reading events from the event queue is done with either fIfBSDL_PollEventfPfR or fIfBSDL_PeepEventsfPfR&. We&'ll use fBSDL_PollEventfP and step through an example&.
  123. .PP
  124. First off, we create an empty fBSDL_EventfR structure&. 
  125. .PP
  126. .nf
  127. f(CWSDL_Event test_event;fR
  128. .fi
  129. .PP
  130.  fBSDL_PollEventfP removes the next event from the event queue, if there are no events on the queue it returns fB0fR otherwise it returns fB1fR&. We use a fBwhilefP loop to process each event in turn&. 
  131. .PP
  132. .nf
  133. f(CWwhile(SDL_PollEvent(&test_event)) {fR
  134. .fi
  135. .PP
  136.  The fBSDL_PollEventfP function take a pointer to an fBSDL_EventfR structure that is to be filled with event information&. We know that if fBSDL_PollEventfP removes an event from the queue then the event information will be placed in our fBtest_eventfR structure, but we also know that the fItypefP of event will be placed in the fBtypefR member of fBtest_eventfR&. So to handle each event fBtypefR seperately we use a fBswitchfP statement&. 
  137. .PP
  138. .nf
  139. f(CW  switch(test_event&.type) {fR
  140. .fi
  141. .PP
  142.  We need to know what kind of events we&'re looking for fIandfP the event fBtypefR&'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 fBSDL_MOUSEMOTIONfP is, more than likely, the event we&'re looking for&. A little fImorefR research tells use that fBSDL_MOUSEMOTIONfP events are handled within the fIfBSDL_MouseMotionEventfRfR structure which is the fBmotionfR member of fBSDL_EventfR&. We can check for the fBSDL_MOUSEMOTIONfP event fBtypefR within our fBswitchfP statement like so: 
  143. .PP
  144. .nf
  145. f(CW    case SDL_MOUSEMOTION:fR
  146. .fi
  147. .PP
  148.  All we need do now is read the information out of the fBmotionfR member of fBtest_eventfR&. 
  149. .PP
  150. .nf
  151. f(CW      printf("We got a motion event&.
  152. ");
  153.       printf("Current mouse position is: (%d, %d)
  154. ", test_event&.motion&.x, test_event&.motion&.y);
  155.       break;
  156.     default:
  157.       printf("Unhandled Event!
  158. ");
  159.       break;
  160.   }
  161. }
  162. printf("Event queue empty&.
  163. ");fR
  164. .fi
  165. .PP
  166. .PP
  167. It is also possible to push events onto the event queue and so use it as a two-way communication path&. Both fIfBSDL_PushEventfPfR and fIfBSDL_PeepEventsfPfR allow you to place events onto the event queue&. This is usually used to place a fBSDL_USEREVENTfP 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 fBtypefR member and filling the appropriate member structure with information&. 
  168. .PP
  169. .nf
  170. f(CWSDL_Event user_event;
  171. user_event&.type=SDL_USEREVENT;
  172. user_event&.user&.code=2;
  173. user_event&.user&.data1=NULL;
  174. user_event&.user&.data2=NULL;
  175. SDL_PushEvent(&user_event);fR
  176. .fi
  177. .PP
  178. .SH "SEE ALSO"
  179. .PP
  180. fIfBSDL_PollEventfPfR, fIfBSDL_PushEventfPfR, fIfBSDL_PeepEventsfPfR
  181. ..." created by instant / docbook-to-man, Tue 11 Sep 2001, 22:59