This seems to work...
' createcanvas.bmx
Strict
Global GAME_WIDTH=320
Global GAME_HEIGHT=280
Local nextDriver$ = "GL"
' create a centered window with client size GAME_WIDTH,GAME_HEIGHT
Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2
Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2
Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)
' create a canvas for our game
Local canvas:TGadget=CreateCanvas(0,0,320,240,window)
SetGraphics CanvasGraphics(canvas)' Only needed here for the _max2ddriver.ToString() below
Local changeButton:TGadget = CreateButton("Set " + nextDriver$ + " Driver", 8, 248, 100, 24, window)
Local driverLabel:TGAdget = CreateLabel("Currently using - " + _max2ddriver.ToString(), 100, 254, 220, 24,..
window, LABEL_CENTER)
' create an update timer
CreateTimer 60
While WaitEvent()
Select EventID()
Case EVENT_TIMERTICK
RedrawGadget canvas
Case EVENT_GADGETPAINT
SetGraphics CanvasGraphics(canvas)
SetOrigin 160,120
SetLineWidth 5
Cls
Local t=MilliSecs()
DrawLine 0,0,120*Cos(t),120*Sin(t)
DrawLine 0,0,80*Cos(t/60),80*Sin(t/60)
Flip
Case EVENT_WINDOWCLOSE
FreeGadget canvas
End
Case EVENT_APPTERMINATE
End
Case EVENT_GADGETACTION
If currentEvent.source = changeButton
If nextDriver$ = "GL"
nextDriver$ = "DX"
changeButton.SetText("Set " + nextDriver$ + " Driver")
FreeGadget canvas
SetGraphicsDriver GLMax2DDriver()
Else
nextDriver$ = "GL"
changeButton.SetText("Set " + nextDriver$ + " Driver")
FreeGadget canvas
SetGraphicsDriver D3D7Max2DDriver()
EndIf
canvas:TGadget=CreateCanvas(0,0,320,240,window)
SetGraphics CanvasGraphics(canvas) ' Only needed here for the _max2ddriver.ToString() below
driverLabel.SetText("Currently using - " + _max2ddriver.ToString())
EndIf
End Select
Wend