Page 4 sur 4

Publié : ven. 17/déc./2004 18:05
par hardy
Ca ne devrait pas le perturber.
Par contre, si la procédure envoie des messages à la fenêtre, même s'ils sont envoyés aux bons moments, ils vont dans la queue des messages. Et si celle-ci est encombrée...
Donne un code où ton problème survient qu'on voit ça.

Publié : ven. 17/déc./2004 19:07
par Backup
et j'ai laissé juste le Delay(1)

et là ca marche nickel....
j'avais humblement fait la remarque au debut du topic !! :? :D

voici ce que j'avais ecrit :
tu doit surement utiliser un "WaitWindowEvent() "

utilise un "WindowEvent()" suivi d'un delay(2) et tu aura un meilleurs
rendu , je pense ! Smile

Publié : dim. 19/déc./2004 12:35
par Torp
Ce bout de code tendrait à prouver que meme lorsque l'on fait un timer par procedure, non attaché à une fenetre, un événement est tout de meme envoyé à celle-ci.

Isn't it?

Code : Tout sélectionner

Declare Timer()
Declare Sablier(hwnd.l, uMsg.l, idEvent.l, dwTime.l)

OpenConsole()

Global Timer1

If InitMouse()=0 Or InitSprite()=0 Or InitKeyboard()=0 Or InitSound()=0
  MessageRequester("Erreur","Impossible d'initialiser DirectX",0)
  End
EndIf

If OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_TitleBar,"Le jarnac")=0
  MessageRequester("Erreur","Impossible d'afficher l'écran principal",0)
  End
EndIf

If OpenWindowedScreen(WindowID(),0,0,800,600,0,0,0)=0
  MessageRequester("Erreur","Impossible d'afficher l'écran principal",0)
  End
EndIf

Timer()

Repeat
  Event=WindowEvent()
  PrintN(Str(Event))
  Delay(5)
Until Event=#PB_Event_CloseWindow

Procedure Timer()
  Timer1=SetTimer_(#Null,#Null, 1000, @Sablier())
EndProcedure

Procedure Sablier(hwnd.l,uMsg.l,idEvent.l,dwTime.l)
  Select uMsg
    Case #WM_TIMER
      Select idEvent 
        Case Timer1 
          ; boucle vide
      EndSelect
  EndSelect
EndProcedure