Repeat wohin, damit die Abfrage alle xx ms aktualisiert wird
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
oh nee...
den ersten Text wirst du niemals sehen, weil das event erst verarbeitet werden muss um den text anzuzeigen.
@edel
klar, die Eventschleife muss durchlaufen, aber um eine WM_TIMER zu verarbeiten muss sie das doch auch....?
klar ist es besser, direkt ein Timer-Event erzeugen zu lassen,
anstatt bei jedem TimeOut zu checken, ob schon wieder ne halbe sekunde rum ist...
wie gesagt, schade dass das nicht nativ drin ist.
gibt doch noch mehr Windows-Spezifisches...
... außerdem haben Linux und OSX doch vielleicht auch timer...
Code: Alles auswählen
SetGadgetText(20,"It will take a moment to do the analysis, please wait.")
UpdateDrives(0)
SetGadgetText(20,"Drive analysis completed.")
@edel
klar, die Eventschleife muss durchlaufen, aber um eine WM_TIMER zu verarbeiten muss sie das doch auch....?
klar ist es besser, direkt ein Timer-Event erzeugen zu lassen,
anstatt bei jedem TimeOut zu checken, ob schon wieder ne halbe sekunde rum ist...
wie gesagt, schade dass das nicht nativ drin ist.
gibt doch noch mehr Windows-Spezifisches...
... außerdem haben Linux und OSX doch vielleicht auch timer...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Versteh ich jetzt nicht so ganz, warum sollte man das nicht sehen koennen?Kaeru Gaman hat geschrieben:oh nee...den ersten Text wirst du niemals sehen, weil das event erst verarbeitet werden muss um den text anzuzeigen.Code: Alles auswählen
SetGadgetText(20,"It will take a moment to do the analysis, please wait.") UpdateDrives(0) SetGadgetText(20,"Drive analysis completed.")
Timer gibt es wohl ueberall, koennte man ja mal eine Include basteln, die plattform unabhaengig ist.
Zuletzt geändert von edel am 04.05.2009 17:49, insgesamt 1-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
der Text "It will take a moment to do the analysis, please wait." wird nicht zu sehen sein,Zerosurf hat geschrieben:genau das meinte ich eigentlich auchVersteh ich jetzt nicht so ganz, warum sollte man das nicht sehen koennen?
weil vor dem nächsten WaitWindowEvent() der Text nochmal auf "Drive analysis completed." geändert wird.
generell ist von so einer Vorgehensweise abzuraten.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Verstehe ich immer noch nicht, es funktioniert doch
Code: Alles auswählen
Procedure main()
Protected window
Protected event,i
window = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,640,480,"Test",#WS_OVERLAPPEDWINDOW)
If window
ButtonGadget(0,0,0,100,23,"click")
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
If EventGadget() = 0
SetGadgetText(0,"Bitte warten ...")
While i < 10000000
i +1
Wend
i = 0
SetGadgetText(0,"click")
EndIf
EndIf
If event = #PB_Event_CloseWindow
Break
EndIf
ForEver
EndIf
EndProcedure:End main()
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
das ist ein bedeutungsloser zufall.
man kann sich nicht mal bei dem Unterschied von mit oder ohne XP-Skin-Unterstützung sicher sein,
welche und wieviel Events abgesetzt werden wenn man irgendwelche Inhalte aktualisiert.
also, egal welchen Inhalt von welchen Gadgets man verändert,
man sollte immer nachdem eine Änderung durchgeführt wurde die events verarbeiten.
in diesem falle kann man in dem einen branch Gadget 10 verstecken, den ersten text ändern und die Subroutine starten...
dann sollte man aber in die normale Eventverarbeitung zurückkehren.
bei Beeindigung der Subroutine kann man dann ein Event feuern,
auf das die Hauptschleife mit der zweiten Textänderung und anzeigen von Gadget 10 reagiert.
alles andere ist fishikram.
mich wundert, dass du, wenn du vorher drüber moserst dass ein timeout schlechter ist als ein timer,
eine derart unsaubere arbeitsweise nicht ebenfalls kritisierst.
man kann sich nicht mal bei dem Unterschied von mit oder ohne XP-Skin-Unterstützung sicher sein,
welche und wieviel Events abgesetzt werden wenn man irgendwelche Inhalte aktualisiert.
also, egal welchen Inhalt von welchen Gadgets man verändert,
man sollte immer nachdem eine Änderung durchgeführt wurde die events verarbeiten.
in diesem falle kann man in dem einen branch Gadget 10 verstecken, den ersten text ändern und die Subroutine starten...
dann sollte man aber in die normale Eventverarbeitung zurückkehren.
bei Beeindigung der Subroutine kann man dann ein Event feuern,
auf das die Hauptschleife mit der zweiten Textänderung und anzeigen von Gadget 10 reagiert.
alles andere ist fishikram.
mich wundert, dass du, wenn du vorher drüber moserst dass ein timeout schlechter ist als ein timer,
eine derart unsaubere arbeitsweise nicht ebenfalls kritisierst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.