Timer Problem
Verfasst: 14.08.2007 15:45
Grüetzi
Nachdem ich mir jetz auch ein bisschen die Timerfunktionen angesehen habe stellten sich mir einige Fragen, ich hab mehrere kurze Codes geschrieben, um meine Probleme zu verdeutlichen...
Code 1: (aus diesem Forum)
macht das was ich erwarte!
Code 2:
macht auch das was ich erwarte
(beide -> Benachrichtigung nach 5 Sekunden)
Code 3:
tut nicht mehr was ich will
soll heißen, sobald ich eine Messagebox weggeklickt hab, kommt sofort die nächste (mit erhöhtem i) --> WM_TIMER wird zu oft aufgerufen, why?
Code4:
ist eig. nur ne Spielerei, verhält sich trotzdem komisch in Meinen Augen...
---> es erscheint eine messagebox(von WM_TIMER)
klick ich sie weg, kommt sofort die nächste, nach 5 Sekunden kommt die richtige MSGBOX(@MSGREQ())
Frage: Wieso wird immer noch eine WM_TIMER message aufgerufen (bzw. so viele Timermessages)
Code 5:
bei Starten des Programms: 1 beep
nach 5 Sekunde MSGBOX (@MSGREQ())
nach wegklicken 2 Beeps
nach 5 Sekunde MSGBOX (@MSGREQ())
nach wegklicken 2 Beeps
usw...
Frage: wieso werden genau 2 Timermessages aufgerufen
I am confused
Nachdem ich mir jetz auch ein bisschen die Timerfunktionen angesehen habe stellten sich mir einige Fragen, ich hab mehrere kurze Codes geschrieben, um meine Probleme zu verdeutlichen...
Code 1: (aus diesem Forum)
Code: Alles auswählen
If OpenWindow(0, #PB_Ignore, 0, 200, 200, "Test")
SetTimer_(WindowID(0), 0, 5000, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_TIMER
Debug "Schon wieder 5 Sekunden um"
EndSelect
ForEver
EndIf
KillTimer_(WindowID(0), 0)
Code 2:
Code: Alles auswählen
Procedure MSGREQ()
MessageRequester("Timer", "Die Zeit ist vorbei")
EndProcedure
ende = 0
hwnd = OpenWindow(0, 100, 100, 500, 500, "Timer")
SetTimer_(hWnd, 10, 5000, @MSGREQ())
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
Ende = 1
EndSelect
Until ende = 1
KillTimer_(hWnd, 10)
(beide -> Benachrichtigung nach 5 Sekunden)
Code 3:
Code: Alles auswählen
If OpenWindow(0, #PB_Ignore, 0, 200, 200, "Test")
SetTimer_(WindowID(0), 0, 5000, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_TIMER
i = i+1
Messagerequester(Str(i), "5 Sekunden sind um!")
EndSelect
ForEver
EndIf
KillTimer_(WindowID(0), 0)
soll heißen, sobald ich eine Messagebox weggeklickt hab, kommt sofort die nächste (mit erhöhtem i) --> WM_TIMER wird zu oft aufgerufen, why?
Code4:
Code: Alles auswählen
Procedure MSGREQ()
MessageRequester("Timer", "Die Zeit ist vorbei")
EndProcedure
ende = 0
hwnd = OpenWindow(0, 100, 100, 500, 500, "Timer")
SetTimer_(hWnd, 10, 5000, @MSGREQ())
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
Ende = 1
Case #WM_TIMER
i=i+1
MessageRequester(Str(i), "5 Sekunden sind um!")
EndSelect
Until ende = 1
KillTimer_(hWnd, 10)
---> es erscheint eine messagebox(von WM_TIMER)
klick ich sie weg, kommt sofort die nächste, nach 5 Sekunden kommt die richtige MSGBOX(@MSGREQ())
Frage: Wieso wird immer noch eine WM_TIMER message aufgerufen (bzw. so viele Timermessages)
Code 5:
Code: Alles auswählen
Procedure MSGREQ()
MessageRequester("Timer", "Die Zeit ist vorbei")
EndProcedure
ende = 0
hwnd = OpenWindow(0, 100, 100, 500, 500, "Timer")
SetTimer_(hWnd, 10, 5000, @MSGREQ())
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
Ende = 1
Case #WM_TIMER
Beep_(440, 500)
EndSelect
Until ende = 1
KillTimer_(hWnd, 10)
nach 5 Sekunde MSGBOX (@MSGREQ())
nach wegklicken 2 Beeps
nach 5 Sekunde MSGBOX (@MSGREQ())
nach wegklicken 2 Beeps
usw...
Frage: wieso werden genau 2 Timermessages aufgerufen
I am confused
