Re: How do I ....?

new topic     » goto parent     » topic index » view thread      » older message » newer message

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

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu