Stefou a écrit :
On est bien d'accord!!! Alors pourquoi il me dit clic sur la fenêtre 0 puisque je clic sur la 1!!!!
alors c'est pourtant indiqué dans la doc !!
je cite :
Renvoie le numéro de la fenêtre dans laquelle s'est produit le dernier évènement renvoyé
qui te dis, dans ton code que le dernier evenement renvoyé viens de ta fenetre 1 ??
en realité pleins d'event se passent tres tres rapidement ... lorsque tu quitte une fenetre, lorsque tu entres dans une autre etc...
en plus le timer... bref meme windows en ajoutes au passage ....
c'est a toi de choisir l'evenement que tu veux recuperer !
les events windows sont comme une cascade d'eau qui coule , a toi de récupérer les poissons qui te plaisent et qui tombent a la volée ...
ton code revu en plus propre (avec des cases) .. et qui utilise (comme Falsam te l'a expliqué) le bon evenement a recuperer
Code : Tout sélectionner
enumeration
#Win_0
#win_1
#timer
Endenumeration
If OpenWindow(#win_0, 0, 0, 300, 600, "fenetre 0", #PB_Window_SystemMenu )
OpenWindow(#win_1, 310, 0, 300, 600, "fenetre 1", #PB_Window_SystemMenu,WindowID(#win_0) )
AddWindowTimer(#win_0,#timer,1000)
Repeat
event= WaitWindowEvent(2)
select Event
; le Timer
case #PB_Event_Timer
If EventTimer() =#timer
debug "Timer tick"
EndIf
case #WM_LBUTTONDOWN
debug "la fenetre qui a été cliquée est la numero :"+GetActiveWindow()
EndSelect
Until event= #PB_Event_CloseWindow
endif
de plus , tu utilises non pas 2 fenetres indépendantes , mais une fenetre qui est la fille de l'autre
c'est deja bien différent que 2 fenetres indépendante !!
si tu veux avoir des events séparés , il te faut gerer ta boucle d'event de cette façon :
Code : Tout sélectionner
Enumeration 0 ; Id. Fenêtres
#FENETRE1
#FENETRE2
EndEnumeration
Enumeration 0 ; Id. Gadgets
#FEN1_BOUTON
#FEN1_FERMER
#FEN2_FERMER
EndEnumeration
If OpenWindow(#FENETRE1, 0, 0, 640, 480, "Fenêtre 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE1))
ButtonGadget(#FEN1_BOUTON, 5, 5, 100, 22, "Ouvrir Fenêtre 2")
ButtonGadget(#FEN1_FERMER, 5, 45, 100, 22, "Quitter")
EndIf
Repeat
Evenement.l = WaitWindowEvent()
Select EventWindow()
;=====================================================
;== EVENEMENTS DE LA FENETRE PRINCIPALE
;=====================================================
Case #FENETRE1
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN1_BOUTON
If OpenWindow(#FENETRE2, 0, 0, 320, 240, "Fenêtre 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE2))
ButtonGadget(#FEN2_FERMER, 5, 5, 100, 22, "Fermer")
EndIf
EndIf
Case #FEN1_FERMER
Break
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
;=====================================================
;== EVENEMENTS DE LA FENETRE SECONDAIRE
;=====================================================
Case #FENETRE2
Select Evenement
Case #PB_Event_Gadget
If EventGadget() = #FEN2_FERMER
CloseWindow(#FENETRE2)
EndIf
Case #PB_Event_CloseWindow
CloseWindow(#FENETRE2)
EndSelect
EndSelect
ForEver
EndIf
; EPB
et le prochain coup , utilise des Constantes, c'est mieux lisible que des 0 ou 1 ou 2 .....