max2d + wxgadgets
BlitzMax Forums/Brucey's Modules/max2d + wxgadgets
| ||
hi im trying to create a canvas for max2d and drawing some gadgets at the same time. I tried to merge the read-only text example and the max2d example:SuperStrict Framework wx.wxApp Import wx.wxFrame Import wx.wxPanel Import wx.wxTextCtrl Import wx.wxmax2D Import wx.wxTimer Type MyTextCtrl Extends wxTextCtrl EndType Type mypanel Extends wxPanel Method oninit() SetAutoLayout( True ) EndMethod EndType New MyApp.run() Type MyApp Extends wxApp Field frame:MyFrame Field panel:MyPanel Method OnInit:Int() ' Create the main application windowType MyFrame Extends wxFrame frame = MyFrame(New MyFrame.Create( , , "Kingdom" , , , 640 , 480) ) Local panel:mypanel = MyPanel(New MyPanel.Create( frame, 0, 0, 640, 200 )) Local readonly:mytextctrl = MyTextCtrl(New MyTextCtrl.Create( panel, wxID_ANY, "Read only", 10,90, 140,100 , wxTE_READONLY|wxTE_MULTILINE | wxHSCROLL )) readonly.AppendText(" Appended.") ' Show it and tell the application that it's our main window frame.show(True) SetTopWindow(frame) Return True End Method End Type Type MyFrame Extends wxFrame Field canvas:MyCanvas Method OnInit() canvas = MyCanvas(New MyCanvas.CreateWin(Self)) ConnectAny(wxEVT_CLOSE, OnClose) End Method Function OnClose(event:wxEvent) MyFrame(event.parent).canvas.timer.Stop() ' stop the timer! wxWindow(event.parent).Destroy() ' remove the frame End Function Function OnQuit(event:wxEvent) wxWindow(event.parent).Close(True) End Function End Type Type MyCanvas Extends wxWindow Field timer:wxTimer Method OnInit() SetBackgroundStyle(wxBG_STYLE_CUSTOM) timer = New wxTimer.Create(Self) ConnectAny(wxEVT_PAINT, OnPaint) ConnectAny(wxEVT_TIMER, OnTick) timer.Start(30) End Method Function OnPaint(event:wxEvent) Local canvas:MyCanvas = MyCanvas(event.parent) SetGraphics wxGraphics(canvas) SetColor(0, 0, 0) Cls DrawLine 200,200,250,250 Flip End Function Function OnTick(event:wxEvent) wxWindow(event.parent).Refresh() End Function End Type but i can just see a white square |
| ||
has anyone done this sucessfully? |
| ||
Me thinks something went wrong somewhere in your example :-) Doesn't appear to do much here either. |
| ||
could I have an example of max2d plus widgets please? |
| ||
The glmax2d sample shows how to use the wxGLCanvas on a window. You import wx.wxGLMax2D, which is a special version of BRL.GLMax2D that works better with wxWidgets. If you want to use the DX max2d driver, I'm not very experienced with the Win32 side of things... but since you can get access to the HWND handle of a wxWindow, it should be relatively easy to connect the two together. Has anyone tried it? I did manage to demo the Blitz3DSDK running on a wxWindow instance at one point for someone. |
| ||
I managed to get a textcontrol to appear but I dont why it appears at that place, or why the rest of the screen is covered in gray so that I cant see the clock |
| ||
Here's a slightly tweaked version of your example : I've added coords/sizing to the canvas, and changed the main panel - The control added to a frame should be either a sizer or a container type, and by default (only) fills the whole child area of the frame. Tested on Mac (PPC)... but expect it to work on Win32 also... :-) |
| ||
aha! so you put the canvas on the panel instead of the frame AND you specified the size and position of the canvas thanks! |