PB6.03, 6.04 - window parameters generate an error
Posted: Sat Jan 20, 2024 11:44 am
Hey
When manipulating several windows, I have a memory access bug if I use #PB_Window_MinimizeGadget | #PB_Window_MinimizeGadget as a parameters, whereas if I only use #PB_Window_SystemMenu it works.
// Moved from "Bugs - Windows" to "Coding Questions" (Kiffi)
When manipulating several windows, I have a memory access bug if I use #PB_Window_MinimizeGadget | #PB_Window_MinimizeGadget as a parameters, whereas if I only use #PB_Window_SystemMenu it works.
Code: Select all
; -----------------------------------
; - INITIALISATION -
; -----------------------------------
Enumeration Fenetres
#Fenetre1
#Fenetre2
EndEnumeration
Enumeration Gadgets
#BTouvrirFen1
#BTouvrirFen2
#BTfermerFen1
#BTfermerFen2
EndEnumeration
Declare OuvrirFenetre1()
Declare OuvrirFenetre2()
Global.b Fenetre1Ouverte = #False, Fenetre2Ouverte = #False , exit = 0
; -----------------------------------
; - PROCEDURES -
; -----------------------------------
#PARAM = #PB_Window_MinimizeGadget | #PB_Window_MinimizeGadget ; <- BUG
#PARAM2 = #PB_Window_SystemMenu
Procedure OuvrirFenetre1()
If OpenWindow(#Fenetre1, 300, 10, 300, 600, "Fenetre 1", #PARAM2) ; <- Try #PARAM here instead of #PARAM2
ButtonGadget(#BTouvrirFen2, 10,10,100,30, "Ouvrir fen2")
ButtonGadget(#BTfermerFen1, 10,40,100,30, "Fermer moi")
Fenetre1Ouverte = #True
Debug "Fen ouverte 1 : " + Fenetre1Ouverte
ProcedureReturn Fenetre1Ouverte
EndIf
EndProcedure
Procedure OuvrirFenetre2()
If OpenWindow(#Fenetre2, WindowX(#Fenetre1)+302, WindowY(#Fenetre1), 300, 600, "Fenetre 2", #PARAM2) ; <- Try #PARAM here instead of #PARAM2
ButtonGadget(#BTouvrirFen1, 10,10,100,30, "Ouvrir fen1")
ButtonGadget(#BTfermerFen2, 10,40,100,30, "Ferme moi")
Fenetre2Ouverte = #True
Debug "Fen ouverte 2 : " + Fenetre2Ouverte
If Fenetre1Ouverte = #True
DisableGadget(#BTouvrirFen1,1)
EndIf
ProcedureReturn Fenetre2Ouverte
EndIf
EndProcedure
; -----------------------------------
; - PROGRAMME -
; -----------------------------------
OuvrirFenetre1()
Repeat
Event = WaitWindowEvent(20)
Fenetre = EventWindow()
Gadget = EventGadget()
TypeEvent = EventType()
Select Event
;Gestion des actions sur les gadgets
Case #PB_Event_Gadget
Select Gadget
Case #BTouvrirFen1
If Fenetre1Ouverte = #False
OuvrirFenetre1()
DisableGadget(#BTouvrirFen1,1)
Else
Debug "Fenêtre 1 déjà ouverte"
EndIf
Case #BTouvrirFen2
If Fenetre2Ouverte = #False
OuvrirFenetre2()
DisableGadget(#BTouvrirFen2,1)
Else
Debug "Fenêtre 2 déjà ouverte"
EndIf
Case #BTfermerFen1
Fenetre1Ouverte = #False
CloseWindow(#Fenetre1)
Debug "Fen ouverte 1 : " + Fenetre1Ouverte
If Fenetre2Ouverte = #False
exit = 1
Else
DisableGadget(#BTouvrirFen1,0)
EndIf
Case #BTfermerFen2
Fenetre2Ouverte = #False
CloseWindow(#Fenetre2)
Debug "Fen ouverte 2 : " + Fenetre2Ouverte
If Fenetre1Ouverte = #False
exit = 1
Else
DisableGadget(#BTouvrirFen2,0)
EndIf
EndSelect
;Gestion des actions si fermeture des fenêtres
Case #PB_Event_CloseWindow
Select Fenetre
Case #Fenetre1
Fenetre1Ouverte = #False
CloseWindow(#Fenetre1)
If Fenetre2Ouverte = #False
exit = 1
EndIf
Case #Fenetre2
Fenetre2Ouverte = #False
CloseWindow(#Fenetre2)
If Fenetre1Ouverte = #False
exit = 1
EndIf
EndSelect
EndSelect
Until exit = 1
End
// Moved from "Bugs - Windows" to "Coding Questions" (Kiffi)