ich habe einen Timer im Programm. Das klappt auch gut und ich habe keine Probleme mit dem Ablauf.
Nur ist es so, dass nach dem Start vom Programm die 1. Ausführung erst nach 360000 Millisekunden ausgeführt wird.
Gibt es auch eine Möglichkeit, das Programm gleich nach dem Start auszuführen, und danach alle 360000 Millisekunden wieder, so das man gleich sieht was rauskommt, und nicht erst 6 Minuten warten muss?
Ich mich mit den API-Befehlen nicht aus, muss ich da irgendwo eine "1" oder eine "0" einfügen?
So wie ich die Timergeschichte halbwegs verstehe schickt das Programm einen Befehl an Windows, und danach "kümmert" sich Windows um die Sache was mit dem Aufruf alle 360000 Millisekunden angeht.
Mein Code ist wie folgt aufgebaut:
Code: Alles auswählen
Procedure Hauptprogramm()
...
...
...
EndProcedure
Procedure Zeitschleife(hWnd.l, uMsg, IDEvent, dwTime)
Static Init
If Init = #False
Init = #True
EndIf
Select IDEvent
Case 1
Hauptprogramm()
EndSelect
EndProcedure
If OpenWindow(1, 0, 0, 350, 290, "Timer", #PB_Window_ScreenCentered | #PB_Window_SystemMenu| #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(1))
ButtonGadget(6, 60, 170, 250, 30, "Start")
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=6
SetTimer_(WindowID(1), 1, 360000, @Zeitschleife())
SetWindowState(1, #PB_Window_Minimize)
EndIf
EndIf
Until Quit=1
KillTimer_(WindowID(1), 1)
EndIf
EndIf