Peut être simplifié par un :comtois a écrit : Ce qui pourrait donnerCode : Tout sélectionner
Event = WindowEvent() Select Event Case 0 Delay(10) ...
Code : Tout sélectionner
Event = WindowEvent(10)
/Lio
Peut être simplifié par un :comtois a écrit : Ce qui pourrait donnerCode : Tout sélectionner
Event = WindowEvent() Select Event Case 0 Delay(10) ...
Code : Tout sélectionner
Event = WindowEvent(10)
Code : Tout sélectionner
Repeat
Delay(MainDelay)
x = InputMessage()
Select x
Case #EventA
For i = 0 to n
; CodeA
Delay(SubDelay)
Next
Case #EventB
; Code B1
Delay(SubDelay)
; Code B2
EndSelect
Until Quit
Exact, désolé... Ca fait un pb moment que je n'ai vraiment utilisé PB !Dobro a écrit :il a surement voulu dire
Evenement = WaitWindowEvent([Minuteur])
ben non !!Octavius a écrit :Ca dépend dans quelles conditions on travaille. Dans certaines conditions, en tout cas par exemple avec un écran fenêtré et l'InitMouse() activé, le WaitWindowEvent() détecte en permanence le #WM_MOUSEMOVE lorsqu'on bouge la souris, ce qui fait décoller le temps CPU, j'utilise donc un Delay(1) systématiquement.
Mais non ! WaitWindowEvent(1) attends une microseconde s'il ne se passe rien, or si on bouge tout le temps la souris il se passe tout le temps l'événement #WM_MOUSEMOVE, donc il faut un Delay(1) pour ralentir la boucle même s'il se passe quelque chose !Dobro a écrit :ben non !!Octavius a écrit :Ca dépend dans quelles conditions on travaille. Dans certaines conditions, en tout cas par exemple avec un écran fenêtré et l'InitMouse() activé, le WaitWindowEvent() détecte en permanence le #WM_MOUSEMOVE lorsqu'on bouge la souris, ce qui fait décoller le temps CPU, j'utilise donc un Delay(1) systématiquement.![]()
tu fait simplement WaitWindowEvent(1)
; code Dobro
LoadFont (1, "arial" , 50 )
LoadFont (2, "arial" , 50 )
Resultat = InitSprite ()
Global angle,Amplitude
Amplitude=10
Texte.s= "Le Lac d'annecy !"
WindowID = OpenWindow (1, 50, 50, 640, 200, "hello" , #PB_Window_SystemMenu|#PB_Window_MinimizeGadget )
WindowID = WindowID (1)
OpenWindowedScreen ( WindowID , 0, 0, 640, 200, 1, 0, 0)
CreateImage (100, 640, 100)
StartDrawing ( ImageOutput (100))
FrontColor ( RGB ($0,$FF,$FF))
BackColor ( RGB (0, 0, 0))
DrawingFont ( FontID (1))
DrawingMode (1)
DrawText (0,0,Texte.s)
StopDrawing ()
For t=0 To 100
GrabImage (100, t, 0, t, 640,1)
Next t
Repeat
For Y= 0 To 100
StartDrawing ( ScreenOutput ())
angle+1 : If angle=360*10: angle=0 : EndIf
x=1+( Sin (angle*2*3.1415926/50)* Amplitude)
DrawImage ( ImageID (Y), x+40, Y+20*x/25+50,640,1)
StopDrawing ()
dep+1 : If dep>640 :dep=-100: EndIf
Next Y
StartDrawing ( ScreenOutput ())
DrawingFont ( FontID (2))
DrawingMode (1)
FrontColor ( RGB ($95,$25,$BA))
BackColor ( RGB (0, 0, 0))
DrawText (40,0,Texte.s)
StopDrawing ()
FlipBuffers ()
ClearScreen ( RGB (0, 0, 0))
event= WaitWindowEvent (100/60)
;Delay(1)
Until event= #PB_Event_CloseWindow
Je pense qu'Octavius a raison :Dobro a écrit :tu n'as manifestement pas compris le role de Delay()
mais pour faire court, cela correspond a DoEVENT() du Visual Basic
ça n'attends, pas vraiment, ça rends la main au systeme (a Windows)
Code : Tout sélectionner
WaitWindowEvent(100)
Code : Tout sélectionner
WaitWindowEvent(): Delay(100)
Code : Tout sélectionner
If WaitWindowEvent() = 0: Delay(100): EndIf
c'est normal tu donne 200 milliseconde au systemlionel_om a écrit :Je pense qu'Octavius a raison :Dobro a écrit :tu n'as manifestement pas compris le role de Delay()
mais pour faire court, cela correspond a DoEVENT() du Visual Basic
ça n'attends, pas vraiment, ça rends la main au systeme (a Windows)
Met un Delay(200), ton exemple va "ramer".
je pense que siEn effet ces deux codes ne renvoient pas au même :
Code:
WaitWindowEvent(100)
Code:
WaitWindowEvent(): Delay(100)
Evidemment que ça rend la main au système, puisque tu es dans un système multitâches (sic). Seulement, ton programme ne peut plus rien faire pendant la durée indiquée. Sa file d'attente se remplit des messages qui lui sont envoyés par windows, et qu'il faudra traiter au "réveil".Dobro a écrit :(delay) ça rends la main au systeme (a Windows)