Dynamically set (and get) Haskell event handlers for basic wxWindows events.
Note that one should always call skipCurrentEvent when an event is not
processed in the event handler so that other eventhandlers can process the
event.

Set an event handler for paint events. The implementation uses an
intermediate buffer for non-flickering redraws.
The device context (DC)
is always cleared before the paint handler is called. The paint handler
also gets the currently visible view area as an argument (adjusted for scrolling).
Note: you can not set both a windowOnPaintRaw and windowOnPaint handler!

Set an event handler for raw paint events. Draws directly to the
paint device context (PaintDC) and the DC is not cleared when the handler
is called. The handler takes two other arguments: the view rectangle and a
list of dirty rectangles. The rectangles contain logical coordinates and
are already adjusted for scrolled windows.
Note: you can not set both a windowOnPaintRaw and windowOnPaint handler!

Install an event handler on an input stream. The handler is called
whenever input is read (or when an error occurred). The third parameter
gives the size of the input batches. The orignal input stream should no longer be referenced after this call!

Printing

Timers

Create a new Timer that is attached to a window. It is automatically deleted when
its owner is deleted (using windowAddOnDelete). The owning window will receive
timer events (windowOnTimer). Broken! (use 'windowTimerCreate'\/'timerOnCommand' instead.)

appRegisterIdle interval handler registers a global idle event
handler that is at least called every interval milliseconds (and
possible more). Returns a method that can be used to unregister this
handler (so that it doesn't take any resources anymore). Multiple
calls to this method chains the different idle event handlers.

On DragAndDropEvent

Set an event handler for a drag & drop command between drag source window and drop
target. You must set dropTarget before use this action.
And If you use fileDropTarget or textDropTarget, you need not use this.

Pass the event on the next wxWindows event handler, either on this window or its parent.
Always call this method when you do not process the event. Note: The use of
propagateEvent is encouraged as it is a much better name than skipCurrentEvent. This
function name is just for better compatibility with wxWindows :-)

Set a generic event handler on a certain window. Takes also a computation
that is run when the event handler is destroyed -- the argument is True if the
owner is deleted, and False if the event handler is disconnected for example.

Sets a generic event handler on an EvtHandler object. The call
(evtHandlerOnEventConnect firstId lastId eventIds state destroy handler object) sets an event
handler handler on object. The eventhandler gets called whenever an event
happens that is in the list eventIds on an object with an Id between firstId
and lastId (use -1 for any object). The state is any kind of haskell data
that is attached to this handler. It can be retrieved via unsafeGetHandlerState.
Normally, the state is the event handler itself. This allows the current event
handler to be retrieved via calls to buttonGetOnCommand for example. The destroy
action is called when the event handler is destroyed. Its argument is True when the
owner is deleted, and False if the event handler is just disconnected.