The button is attached to the canvas. I wonder if I am not making my point clearly enough here. I am not sure if anyone has fully comprehended the problem?
SuperStrict Framework brl.blitz Import brl.standardio Import brl.retro Import brl.bank Import brl.eventqueue Import brl.filesystem Import brl.timer Import brl.system Import brl.jpgloader ?Win32 Import brl.d3d7max2d Import brl.win32maxgui Import pub.win32 ?MacOS Import brl.glmax2d Import brl.cocoamaxgui Import pub.macos ?Linux Import brl.glmax2d Import brl.fltkmaxgui ? Const WINDOW_WIDTH:Int = 640 Const WINDOW_HEIGHT:Int = 480 Const MENU_EXIT:Int = 104 Const MENU_ABOUT:Int = 105 Global main_window:Tgadget Global canvas:TGadget Global backgrnd:TImage Global filemenu:TGadget Global aboutmenu:TGadget '--------------------------------------------------------------------- If ( Initalise() ) '--------------------------------------------------------------------- While WaitEvent() Select EventID() Case EVENT_MENUACTION Select EventData() Case MENU_EXIT Finalise() Case MENU_ABOUT Notify( AppTitle + " ©2006", False ) Default End Select Case EVENT_WINDOWCLOSE If EventSource() = main_window Then Finalise() End Select Wend EndIf Finalise() '--------------------------------------------------------------------- Function MyHook:Object( iId:Int, tData:Object, tContext:Object ) '--------------------------------------------------------------------- Local event:TEvent=TEvent(tData) If event = Null Return Null Select event.source Case main_window Case canvas Select Event.ID Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(canvas) DrawImage backgrnd,0,0 Flip Return Null EndSelect End Select Return tData End Function Const D3DRS_EDGEANTIALIAS:Int=40 '--------------------------------------------------------------------- Function Initalise:Int() '--------------------------------------------------------------------- ?Win32 SetGraphicsDriver D3D7Max2DDriver() ?MacOS SetGraphicsDriver GLMax2DDriver() ?Linux SetGraphicsDriver GLMax2DDriver() ? backgrnd = LoadImage("resources\background.jpg",FILTEREDIMAGE ) ' Create window and menu. CreateFurniture( AppTitle, WINDOW_WIDTH, WINDOW_HEIGHT ) Return True End Function '--------------------------------------------------------------------- Function Finalise() '--------------------------------------------------------------------- End End Function '--------------------------------------------------------------------- Function CreateFurniture( title:String, width:Int, height:Int ) '--------------------------------------------------------------------- Local listbox:TGadget ' Create a centered window with client size WINDOW_WIDTH,WINDOW_HEIGHT Local wx:Int=(GadgetWidth(Desktop())-WINDOW_WIDTH)/2 Local wy:Int=(GadgetHeight(Desktop())-WINDOW_HEIGHT)/2 main_window:TGadget = CreateWindow( title,wx,wy,WINDOW_WIDTH,WINDOW_HEIGHT,Null,WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS | WINDOW_HIDDEN ) canvas:TGadget=CreateCanvas(0,0,WINDOW_WIDTH,WINDOW_HEIGHT,main_window) SetGadgetLayout(canvas, 1, 0, 1, 0 ) ' Add buttons for canvas CreateButton( "Update", ClientWidth(canvas)-80,ClientHeight(canvas)-58,70,24,canvas,BUTTON_CANCEL ) filemenu = CreateMenu("&File", 0,WindowMenu(main_window)) CreateMenu("E&xit", MENU_EXIT, filemenu, KEY_Q, MODIFIER_COMMAND ) aboutmenu = CreateMenu("Help", 0, WindowMenu(main_window)) CreateMenu("&About", MENU_ABOUT, aboutmenu) UpdateWindowMenu(main_window) AddHook EmitEventHook, MyHook ShowGadget(main_window) End Function