Event (Message Data From Screenevent)

Pre-defined structure (UDT) from fbgfx.bi used by ScreenEvent to return 
event data 

Syntax
   #include once "fbgfx.bi"
   using fb
   Dim variable As Event

Description
   Here we report the EVENT structure for clarity:

   Type Event Field = 1
      Type As Long
      Union
         Type
            scancode As Long
            ascii As Long
         End Type
         Type
            x As Long
            y As Long
            dx As Long
            dy As Long
         End Type
         button As Long
         z As Long
         w As Long
      End Union
   End Type

   The Type field will contain the event type ID, while the remaining 4 
   integers will hold sensitive data to the event type. 

   Event types
      The event type is identified by an ID number returned into the first 
      integer of the event buffer (the .type field in the EVENT structure). 
      Known event type IDs - and their values at time of writing - are:

      * EVENT_KEY_PRESS (1) A key was pressed on the keyboard. The 
        .scancode field contains the platform independent scancode value 
        for the key; if the key has an ascii representation, it is held 
        into the .ascii field, which otherwise has a value of 0.
      * EVENT_KEY_RELEASE (2) A key was released on the keyboard. The 
        .scancode and .ascii fields have the same meaning as with the 
        EVENT_KEY_PRESS event.
      * EVENT_KEY_REPEAT (3) A key is being held down repeatedly. The 
        .scancode and .ascii fields have the same meaning as with the 
        EVENT_KEY_PRESS event.
      * EVENT_MOUSE_MOVE (4) The mouse was moved while it was on the 
        program window. The .x and .y fields contain the new mouse position 
        relative to the upper-left corner of the screen, while the .dx and 
        .dy fields contain the motion deltas.
      * EVENT_MOUSE_BUTTON_PRESS (5) One of the mouse buttons was pressed. 
        The .button field has one bit set identifying the button that was 
        pressed; bit 0 identifies the left mouse button, bit 1 the right 
        mouse button and bit 2 the middle mouse button.
      * EVENT_MOUSE_BUTTON_RELEASE (6) One of the mouse buttons was 
        released. The .button field has the same meaning as with the 
        EVENT_MOUSE_BUTTON_PRESS event.
      * EVENT_MOUSE_DOUBLE_CLICK (7)  One of the mouse buttons was double 
        clicked. The .button field has the same meaning as with the 
        EVENT_MOUSE_BUTTON_PRESS event.
      * EVENT_MOUSE_WHEEL (8) The mouse wheel was used; the new wheel 
        position is returned into the .z field.
      * EVENT_MOUSE_ENTER (9) The mouse was moved into the program window.
      * EVENT_MOUSE_EXIT (10) The mouse was moved out of the program 
        window.
      * EVENT_WINDOW_GOT_FOCUS (11) The program window has got focus.
      * EVENT_WINDOW_LOST_FOCUS (12) The program window has lost focus.
      * EVENT_WINDOW_CLOSE (13) The user attempted to close the program 
        window.
      * EVENT_MOUSE_HWHEEL (14) The horizontal mouse wheel was used; the 
        new horizontal wheel position is returned into the .w field.

   The fbgfx.bi header file contains a definition of the EVENT user data 
   type, so it is not necessary to declare it manually.

Example
   See example at ScreenEvent.

Dialect Differences
   * In lang fb, the structure and constants are stored in the FB Namespace
     . This is not the case in other dialects.

Differences from QB
   * New to FreeBASIC

See also
   * ScreenEvent
   * Event Handling
   * Keyboard scancodes
   * Keyboard Input

