Page 1 of 1
Win32Timer
Posted: Sun Nov 06, 2005 8:51 pm
by Droopy
Code updated For 5.20+
Just win32 Timer without CallBack
Code: Select all
;/ Author: BackupUser tweaked by Droopy
OpenWindow(0,0,0,230,120,"Timer with API",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(0,10,10,210,30,"")
TextGadget(1,10,45,210,30,"")
TextGadget(2,10,80,210,30,"Timer 1 and 2 Started",#PB_Text_Center)
;/ Starting Timers
SetTimer_(WindowID(0),1,150,0) ; Timer #1 each 150 ms
SetTimer_(WindowID(0),2,1000,0) ; Timer #2 each 1 second
SetTimer_(WindowID(0),3,10000,0) ; Timer #3 each 10 seconds
Repeat
Event = WaitWindowEvent()
If Event=#WM_TIMER
Select EventwParam()
Case 1 ;/ Timer #1
SetGadgetText(0,GetGadgetText(0)+"-")
Beep_(400,10)
Case 2 ;/ Timer #2
SetGadgetText(1,GetGadgetText(1)+"###")
Beep_(800,10)
Case 3 ;/ Timer #3
SetGadgetText(2,"Timer 1 and 2 Stopped")
KillTimer_(WindowID(0),1) ;/ Kill Timer #1
KillTimer_(WindowID(0),2) ;/ Kill Timer #2
Beep_(1500,500)
EndSelect
EndIf
Until Event=#PB_Event_CloseWindow
Posted: Sun Nov 06, 2005 10:00 pm
by rsts
Hmm - not sure how I'll use this, but it sure does look/sound neat

Posted: Sun Nov 06, 2005 11:06 pm
by Kale
I think this is cleaner, then you don't need 'EventwParam()' which i think is deprieciated.
Code: Select all
;/ Author: Droopy tweaked by Kale
Procedure Timer1()
SetGadgetText(0,GetGadgetText(0)+"-")
Beep_(400,10)
EndProcedure
Procedure Timer2()
SetGadgetText(1,GetGadgetText(1)+"###")
Beep_(800,10)
EndProcedure
Procedure Timer3()
SetGadgetText(2,"Timer 1 and 2 Stopped")
KillTimer_(WindowID(),1) ;/ Kill Timer #1
KillTimer_(WindowID(),2) ;/ Kill Timer #2
Beep_(1500,500)
End
EndProcedure
OpenWindow(0,0,0,230,120,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Timer with API")
CreateGadgetList(WindowID(0))
TextGadget(0,10,10,210,30,"")
TextGadget(1,10,45,210,30,"")
TextGadget(2,10,80,210,30,"Timer 1 and 2 Started",#PB_Text_Center)
;/ Starting Timers
SetTimer_(WindowID(), 1, 150, @Timer1()) ; Timer #1 each 150 ms
SetTimer_(WindowID(), 2, 1000, @Timer2()) ; Timer #2 each 1 second
SetTimer_(WindowID(), 3, 10000, @Timer3()) ; Timer #3 each 10 seconds
Repeat
Event = WaitWindowEvent()
Until Event=#PB_EventCloseWindow
Posted: Sun Nov 06, 2005 11:59 pm
by Droopy
Thanks Kale, it's what i want since long-past

Posted: Mon Nov 07, 2005 12:04 am
by Chris
And why not a simple TimerProcedure
Code: Select all
;/ Author: Droopy tweaked by Kale and Up-tweaked by Chris :o))
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
SetGadgetText(0,GetGadgetText(0)+"-")
Beep_(400,10)
Case 2
SetGadgetText(1,GetGadgetText(1)+"###")
Beep_(800,10)
Case 3
SetGadgetText(2,"Timer 1 and 2 Stopped")
KillTimer_(WindowID(),1) ;/ Kill Timer #1
KillTimer_(WindowID(),2) ;/ Kill Timer #2
Beep_(1500,500)
End
EndSelect
EndSelect
EndProcedure
OpenWindow(0,0,0,230,120,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Timer with API")
CreateGadgetList(WindowID(0))
TextGadget(0,10,10,210,30,"")
TextGadget(1,10,45,210,30,"")
TextGadget(2,10,80,210,30,"Timer 1 and 2 Started",#PB_Text_Center)
;/ Starting Timers
SetTimer_(WindowID(), 1, 150, @TimerProc()) ; Timer #1 each 150 ms
SetTimer_(WindowID(), 2, 1000, @TimerProc()) ; Timer #2 each 1 second
SetTimer_(WindowID(), 3, 10000, @TimerProc()) ; Timer #3 each 10 seconds
Repeat
Event = WaitWindowEvent()
Until Event=#PB_EventCloseWindow
Posted: Mon Nov 07, 2005 12:19 am
by Droopy
I prefer create one procedure for each Timer
Code: Select all
;/ Author: BackupUser tweaked by Droopy/Kale
ProcedureDLL TimerStart(TimerId,Delay,ProcedureAdress)
SetTimer_(WindowID(),TimerId,Delay,ProcedureAdress)
EndProcedure
ProcedureDLL TimerKill(TimerId)
KillTimer_(WindowID(),TimerId)
EndProcedure
;/ Test
Procedure Timer1() ; First ProgressBarGadget
SetGadgetState(0,GetGadgetState(0)+1)
Beep_(400,10)
EndProcedure
Procedure Timer2(); Second ProgressBarGadget
SetGadgetState(1,GetGadgetState(1)+1)
Beep_(1000,10)
EndProcedure
Procedure Timer3()
SetGadgetText(2,"Timer 3 Kill Timer 1 and 2")
TimerKill(1) ;/ Kill Timer #1
TimerKill(2) ;/ Kill Timer #2
Beep_(1500,500)
EndProcedure
OpenWindow(0,0,0,230,120,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Timers with API")
CreateGadgetList(WindowID())
ProgressBarGadget(0,10,10,210,30,0,65,#PB_ProgressBar_Smooth)
ProgressBarGadget(1,10,45,210,30,0,9,#PB_ProgressBar_Smooth)
SetGadgetState(0,0)
SetGadgetState(1,0)
TextGadget(2,10,80,210,30,"Timer 1/2/3 Started",#PB_Text_Center)
;/ Starting Timers
TimerStart(1, 150, @Timer1()) ; Timer #1 each 150 ms
TimerStart(2, 1000, @Timer2()) ; Timer #2 each 1 second
TimerStart(3, 10000, @Timer3()) ; Timer #3 each 10 seconds
Repeat
Until WaitWindowEvent()=#PB_EventCloseWindow