Seite 1 von 2

Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !

Verfasst: 04.11.2005 15:51
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

Verfasst: 04.11.2005 15:58
von Laurin

Code: Alles auswählen

Millisekunden.l = 3000
Delay(Millisekunden)
;)

Verfasst: 04.11.2005 16:26
von Dr.Pixel
Genau das meine ich ja!

mit delay(3000) wartet zwar mein Programm 3 Sekunden,
aber es entsteht eine Sanduhr im Debugfenster!

Verfasst: 04.11.2005 16:29
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.

Verfasst: 04.11.2005 18:15
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

Verfasst: 05.11.2005 07:54
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...

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

Verfasst: 05.11.2005 10:11
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"

Verfasst: 05.11.2005 14:04
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

Verfasst: 05.11.2005 14:10
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

Verfasst: 05.11.2005 14:28
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