Event (Message Data From Screenevent)

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

Syntax
	#include once "fbgfx.bi"
	using fb
	KeyPgDimDim variable KeyPgAs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 KeyPgScreeneventScreenEvent.

Dialect Differences
	* In CompilerDialectslang fb, the structure and constants are stored in the FB KeyPgNamespaceNamespace
	  . This is not the case in other dialects.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgScreeneventScreenEvent
	* ProPgEventHandlingEvent Handling
	* GfxScancodesKeyboard scancodes
	* DevRtlInkeyKeyboard Input

