Droopy a écrit :ça fonctionne comme ça :
si quelqu'un sait pourquoi, je suis preneur
Code : Tout sélectionner
Procedure GestionDesEvenements()
OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
Repeat
a=WindowEvent()
Delay(1)
Until a=#PB_Event_CloseWindow
EndProcedure
CreateThread(@GestionDesEvenements(),"")
Repeat
Delay(1)
ForEver
j'ai repondu pour ce code la et pour ta question !
ça me semble normal que ce code fonctionne puisque tu initie la fenetre et sa boucle des events "multitache" ( a=WindowEvent() ) DANS LA MEME procedure
dans le code que tu donne en dernier tu separe la boucle d'event de la fenetre , comment veut tu que le system sache a quelle fenetre appartient ta surveillance d'event
puisque celle-ci se trouve dans un thread donc separé de la fenetre
je supose que si l'on cree une fenetre dans une procedure , on ne doit pas pouvoir mettre sa boucle d'event dans une procedure differente !
.... mais c'est juste une suposition , j'ai pas testé !:D
je pense qu'on ne peut separer
Code : Tout sélectionner
OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
de
Code : Tout sélectionner
Repeat
a=WindowEvent()
Delay(1)
Until a=#PB_Event_CloseWindow