Global Branch Label

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

Global Branch Label

Berichtdoor glpape » zo jun 03, 2012 11:50 pm

Ik heb altijd een branch label gebruikt als handler voor knoppen. Met een Sub kun je code besparen als je een serie knoppen hebt met een serie aan alternatieve keuzes, want je kunt steeds dezelfde Sub gebruiken. Mijn probleem was: hoe ga je verder vanuit die Sub want je kunt geen branch labels naar buiten de Sub gebruiken.

Maar nu heb ik geloof ik het Global Branch Label ontdekt : de Timer.

Code: Selecteer alles
REM   Sub as event handler for buttonclicks.
'     The Lbty handle is passed into the Sub as a string (here h$).
'     Use as Lbty handle with  <#> prefix.
'     Uses the timer as a "global branch label" to continue from the sub-handler.

calldll #user32, "GetActiveWindow", hmain as ulong

Call SetWdw 750, 200, 400, 300
button #W.b1, "one", handler, UL, 111, 111
button #W.b2, "two", handler, UL, 222, 111
open "" for window as #W
#W "trapclose [qq]"
wait

[on]
timer 0
print  :  print "Haarlem"


wait
[qq]
calldll #user32, "PostMessageA", hmain as ulong, _
         _WM_CLOSE as long, 0 as long, 0 as long, rtn as void
close #W  :  end

Sub handler h$
print
if right$(h$, 1) = "1" then print "one was clicked"
if right$(h$, 1) = "2" then print "two was clicked"
print "h$ is :  "; h$
timer    1000, [on]                     ' 10 msec also OK
End Sub
'wait                                   ' No Need

print "Volendam"                        ' Does not go here
wait


Ik heb het al een paar keer gebruikt : geen problemen gehad.

Hoe gebruiken anderen een Sub als event handler ?

Vr groet,

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron