Fenster unabhängig vom eigenen Prozess machen
Verfasst: 05.12.2006 18:33
Hallo Fans
folgendes:
Mein Programm hat nur einen Knopf, der was wirklich tut.
Er heißt ,,MACHEN !!!,,
Wenn man den klickt, tut das Programm, was ihm aufgetragen wurde.
Es liest eine große Anzahl an Dateien von der Festplatte ein.
Nun mein Problem, ich kann mein Fenster wärend das Programm die Daten auf der Platte durchsucht nicht mehr verschieben oder kleiner machen.
Das ist etwas ungünstig.
Ich denke, es hängt damit zusammen, dass mein Programm aus dem Main-Loop in eine andere Prozedure gegangen ist und erst wieder in den Main-Loop zurück kehrt, bis die Suche vorbei ist.
Müsste ich meine Dateisuche in einem eigenen Thread starten?
Oder einfach zwischen den Schleifen mal ein WindowEvent()
abfragen?
Ha jemand konstruktive Vorschläge?
Sagen wir so:
Anfangs wird es auch nicht selbst wieder gezeichnet. Aber nach einer Weile geht es wieder. Aber nicht, wenn Windows nicht gleich merkt, was los ist und die Schleife ein bisschen mehr macht.

folgendes:
Mein Programm hat nur einen Knopf, der was wirklich tut.
Er heißt ,,MACHEN !!!,,
Wenn man den klickt, tut das Programm, was ihm aufgetragen wurde.
Es liest eine große Anzahl an Dateien von der Festplatte ein.
Nun mein Problem, ich kann mein Fenster wärend das Programm die Daten auf der Platte durchsucht nicht mehr verschieben oder kleiner machen.
Das ist etwas ungünstig.
Ich denke, es hängt damit zusammen, dass mein Programm aus dem Main-Loop in eine andere Prozedure gegangen ist und erst wieder in den Main-Loop zurück kehrt, bis die Suche vorbei ist.
Müsste ich meine Dateisuche in einem eigenen Thread starten?
Oder einfach zwischen den Schleifen mal ein WindowEvent()
abfragen?
Ha jemand konstruktive Vorschläge?
Sagen wir so:
Code: Alles auswählen
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
EndEnumeration
Procedure Mache()
Repeat
Debug "tue"
Until 0=1
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 379, 170, 146, 67, "Dings", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 10, 10, 120, 40, "Mache")
EndIf
EndIf
EndProcedure
;/ Haupt
Open_Window_0()
Repeat
Event = WaitWindowEvent()
If Event=#PB_Event_Gadget
If EventGadget()=#Button_0
Mache()
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
Anfangs wird es auch nicht selbst wieder gezeichnet. Aber nach einer Weile geht es wieder. Aber nicht, wenn Windows nicht gleich merkt, was los ist und die Schleife ein bisschen mehr macht.
