Example of OOP GUI App needed.

BlitzMax Forums/BlitzMax Beginners Area/Example of OOP GUI App needed.

I've Updated the example with a Delete method, which is called automatically by BlitzMax when the object is released. (same as the new method is called when a new object is created)
Strict

Type TTestApp

	Field Window:TGadget = CreateWindow("",0,0,640,480)
	Field Button:TGadget = CreateButton("BUTTON",0,0,100,20,Window)
	Field Canvas:TGadget = CreateCanvas(0,20,ClientWidth(window),ClientHeight(window)-20,window,PANEL_BORDER)
	
	Method New()
		AddHook EmitEventHook,eventhook,Self
		Button.SetLayout(1,0,1,0)
		Canvas.SetLayout(1,1,1,1)
	EndMethod	
	
	Method Delete()
		RemoveHook(EmitEventHook,eventhook)
		FreeGadget(Window)
		FreeGadget(Button)
		FreeGadget(Canvas)
	EndMethod
	
	Function eventhook:Object(id,data:Object,context:Object)
		If TTestApp(context) Then TTestApp(context).OnEvent TEvent(data)
		Return data	
	EndFunction
	
	Method OnEvent(event:TEvent)
		Select event.id
		
			Case EVENT_WINDOWCLOSE
				Select Event.Source
					Case window
						End
				End Select
				
			Case EVENT_GADGETACTION
				Select Event.Source
					Case Button
						Notify "You pressed the button"
				EndSelect
			
			Case EVENT_GADGETPAINT
				Select Event.Source
					Case Canvas
						SetGraphics(CanvasGraphics(canvas))
						SetViewport(0,0,ClientWidth(canvas),ClientHeight(canvas))
						Cls
						DrawText "TEST CANVAS",10,10
						Flip 0
				EndSelect
				
		EndSelect
	EndMethod
	
EndType


Global App:TTestApp = New TTestApp

While True
	WaitEvent()
Wend