Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !

Anfängerfragen zum Programmieren mit PureBasic.
Dr.Pixel
Beiträge: 90
Registriert: 12.08.2005 12:38

Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !

Beitrag von Dr.Pixel »

Gibt es eine Möglichkeit, ein PB-Programm für x-Sekunden
anzuhalten, ohne das eine 100% Auslastung entsteht oder
sich der Mauszeiger sich in eine Sanduhr verwandelt?
Mein PB-Programm arbeitet ohne einem geöffneten Fenster!

Danke.
Dr. Pixel
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Code: Alles auswählen

Millisekunden.l = 3000
Delay(Millisekunden)
;)
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Dr.Pixel
Beiträge: 90
Registriert: 12.08.2005 12:38

Beitrag von Dr.Pixel »

Genau das meine ich ja!

mit delay(3000) wartet zwar mein Programm 3 Sekunden,
aber es entsteht eine Sanduhr im Debugfenster!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

und wenn du in einem thread 3 sek wartest und im hauptprogramm wartest du auf den thread?

ansonsten guck mal im taskmanager, ob du wirklich 100%ige auslastung bei einer pause hast.
wenn nicht, liegt es nämlcih daran, das windows keine rückmeldung innerhalb dieser 3 sek. bekommt udn daher die sanduhr anzeigt.
ich empfehle eine möglichkeit, während dieser pause manuell den normalen mauszeiger einzuschalten, damit es wenigstens nicht nach einer pause aussieht.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

und wenn du es einfach so machst?

Code: Alles auswählen

For i = 1 To 3
  Delay(1000)
  Debug i
Next
bei mir kommt hier keine sanduhr, aber bei dir wahrscheinlich dann wegen dem Delay() sowieso?! musst dann was mit ElapsedMilliseconds() machen.

irgendwie sowas oder so ähnlich:

Code: Alles auswählen

time.l = ElapsedMilliseconds()
Repeat
  Delay(1)
Until ElapsedMilliseconds() - time => 3000
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

um zu dem brasel noch was beizutragen...

Code: Alles auswählen

For n=0 to 10000000
    Delay(0)
Next
...wär mal interessant, die reaktion auf dieses post zu beobachten...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
crossroads
Beiträge: 244
Registriert: 29.08.2004 05:41
Wohnort: Rhine Main Area

Re: Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !

Beitrag von crossroads »

Dr.Pixel hat geschrieben:Gibt es eine Möglichkeit, ein PB-Programm für x-Sekunden
anzuhalten, ohne das eine 100% Auslastung entsteht oder
sich der Mauszeiger sich in eine Sanduhr verwandelt?
Mein PB-Programm arbeitet ohne einem geöffneten Fenster!

Danke.
Dr. Pixel
Vielleicht so:

Code: Alles auswählen

waitSec = 3
Debug "Test"
Waiting = ElapsedMilliseconds() + waitSec * 1000
While Waiting > ElapsedMilliseconds():Delay(5):Wend
Debug "End"
Man soll die Tür aufmachen, bevor man durchgeht ...
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@Kaeru Gaman
das mit Delay(0) hatte ich mir auch zuerst überlegt, aber es verbraucht für meinen geschmack einfach noch zuviel cpu power.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Vielleicht mit einem WindowEvent():

Code: Alles auswählen

OpenWindow(1, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Fenster")
Startzeit = ElapsedMilliseconds()
Wartezeit = 3000
Repeat
  WindowEvent()
  Sleep_(10)
Until ElapsedMilliseconds() - Startzeit => Wartezeit
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Hier noch ein Code um den Mauszeiger zu verändern:

Code: Alles auswählen

Dim Cursors.l(2)
Global lngCounter.l

Cursors(0) = LoadCursor_(0, #IDC_ARROW      ): Debug Cursors(0)
Cursors(1) = LoadCursor_(0, #IDC_APPSTARTING): Debug Cursors(1)
Cursors(2) = LoadCursor_(0, #IDC_WAIT       ): Debug Cursors(2)

OpenWindow(0, 5, 5, 480, 320, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Cursor")
SetTimer_(WindowID(0), 5, 2000, 0)

Repeat
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
            Break
            
        Case #WM_TIMER
            SetCursor_(Cursors(lngCounter))
            SetClassLong_(WindowID(0), #GCL_HCURSOR, Cursors(lngCounter))
            If lngCounter = 2
                lngCounter = 0
            Else
                lngCounter + 1
            EndIf
            
        Default
            Delay(1)
    EndSelect
ForEver
Bild
Antworten