Nope - I only get one EVENT_MOUSEMOVE if I move to a pixel. Regarding the jumping, this tweak (incoroporated below) should fix it:
' createcanvas.bmx Framework brl.win32maxgui Import brl.eventqueue Import brl.d3d7max2d 'Import brl.glmax2d Strict Global GAME_WIDTH=720 Global GAME_HEIGHT=480 ' 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) Local canvas1:TGadget'=CreateCanvas(340,140,320,240,window) ' create an update timer Local picked:TGadget Local handlex,handley 'CreateTimer 60 While WaitEvent() Local src:TGadget=TGadget(EventSource()) DebugLog CurrentEvent.toString() Select EventID() Case EVENT_TIMERTICK RedrawGadget canvas Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(src) 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_MOUSEDOWN picked=src handlex=EventX()+GadgetX(src) handley=EventY()+GadgetY(src) Case EVENT_MOUSEUP picked=Null Case EVENT_MOUSEMOVE If picked Local mx=EventX()+GadgetX(src)-handlex Local my=EventY()+GadgetY(src)-handley SetGadgetShape(src,mx,my,GadgetWidth(picked),GadgetHeight(picked)) EndIf Case EVENT_WINDOWCLOSE FreeGadget canvas End Case EVENT_APPTERMINATE End End Select Wend