Re: How do I ....?
- Posted by Derek Parnell <ddparnell at bigpond.com> Oct 17, 2006
- 585 views
don cole wrote: > > Hello everybody, > > Using the examples I can't seem to get this right. > > 1. Open a window with a Cancel button showing. > > 2. Draw a line across the window using pixmaps. > (this I've done sucessfully) > > 3. At any time stop the procedure by clicking the Cancel button. This might give you a hint or two...
include win32lib.ew without warning integer vWin integer vCancelBtn integer vDrawBtn integer vTimerId integer vDrawingState procedure Timer_Beat(integer self, integer event, sequence parms) integer lColor integer x1,y1 integer x2,y2 sequence lRect -- Pick some random points in the client area lRect = getClientRect(vWin) x1 = rand(lRect[3]-lRect[1]) + lRect[1] x2 = rand(lRect[3]-lRect[1]) + lRect[1] y1 = rand(lRect[4]-lRect[2]) + lRect[2] y2 = rand(lRect[4]-lRect[2]) + lRect[2] -- Pick a color, any color. lColor = rand( power(2, 24) ) -- Draw a line... setPenColor(vWin, lColor) drawLine(vWin, x1, y1, x2, y2) -- Redraw the buttons in case the line messed them up. repaintFG(vCancelBtn) repaintFG(vDrawBtn) end procedure procedure Click_CancelBtn(integer self, integer event, sequence parms) vDrawingState = 0 -- No longer drawing. setEnable(self, 0) -- Disable this button setEnable(vDrawBtn, 1) -- Enable drawing to recommence. killTimer( vWin, vTimerId ) -- Stop the drawing ticker. end procedure procedure Click_DrawBtn(integer self, integer event, sequence parms) vDrawingState = 1 -- Now drawing setEnable(self, 0) -- Disable this button setEnable(vCancelBtn, 1) -- Allow cancelling -- 100 millisecond ticker setTimer( vWin, vTimerId, 100 ) -- kick off the timer again. end procedure procedure main() vWin = create(Window, "Sample Window", 0, 0, 0, 400, 400, 0) vCancelBtn = create(Button, "&Cancel", vWin, 10, 10, 60, 30, 0) vDrawBtn = create(Button, "&Draw", vWin, 100, 10, 60, 30, 0) vTimerId = 1 vDrawingState = 0 setEnable(vDrawBtn, 1) setEnable(vCancelBtn, 0) setHandler(vCancelBtn, w32HClick, routine_id("Click_CancelBtn")) setHandler(vDrawBtn, w32HClick, routine_id("Click_DrawBtn")) setHandler(vWin, w32HTimer, routine_id( "Timer_Beat" )) WinMain(vWin, Normal) end procedure main()
-- Derek Parnell Melbourne, Australia Skype name: derek.j.parnell