Event Questions

BlitzMax Forums/BlitzMax Beginners Area/Event Questions

Jean-Marie(Posted 2009) [#1]
For trial I try to write a very simple drawing program.

For reasons mentioned in another post ( http://www.blitzbasic.com/Community/posts.php?topic=86218 ), I've currently my main loop like:

Repeat
  Select WaitEvent()
  Case KEY_ESCAPE
     ...
  End Select

  X=MouseX()
  Y=MouseY()
  If drawing mode, draw
  If delete mode, delete
  If something changed, flip
Until false


First, is it ok to mix Events and polled events? For example, I read the mouse pos with mousex(); is there any reason why I should use the CurrentEvent info instead?

Then: because of this construct, partially hiding the window with another one will garbage the display (which is not refreshed, as no event came). Is there an event code like WINDOW_SHOW for this?


jsp(Posted 2009) [#2]
Then: because of this construct, partially hiding the window with another one will garbage the display (which is not refreshed, as no event came). Is there an event code like WINDOW_SHOW for this?


Check out the events below. Best to put some of them in a hook function for immediate effect.

EVENT_GADGETPAINT
A Canvas Gadget needs to be redrawn
EVENT_WINDOWMOVE
Window has been moved
EVENT_WINDOWSIZE
Window has been resized
EVENT_APPRESUME
Application resumed

And for your first question i would do it event based, but that's probably just me:)
The advantage is that no cpu power is consumed when nothing happens...


Jean-Marie(Posted 2009) [#3]
hmmm, none of those worked for my repaint problem. Looks anyway bad for simple repaint: I tried following:

Repeat
	WaitEvent()
	Print CurrentEvent.id
        Select CurrentEvent.id
           ...


No event id is displayed for repaint (e.g. when another window is moved over my app window)

Anotherone: EVENT_WINDOWCLOSE doesn't react when I press the window-close-cross in the window bar. Why? instead, EVENT_APPTERMINATE does.


jsp(Posted 2009) [#4]
Quick example:
Draw something and move windows on top. Resize will clear the window.