Sauvegarde de l'état de la fenêtre
Publié : lun. 18/oct./2010 8:07
Bonjour!
Après avoir patenter pendant plusieurs dizaines de minutes sur un mécanisme de ce genre, j'ai décider de le rendre publique, au cas où cela intéresserait quelqu'un!
Ce code sauvegarde à la fermeture du programme la position et la taille de la fenêtre, en plus de l'état, maximiser ou normale, de celle-ci.
Ne pas porter attention au superflu et nom des variables,
Après avoir patenter pendant plusieurs dizaines de minutes sur un mécanisme de ce genre, j'ai décider de le rendre publique, au cas où cela intéresserait quelqu'un!
Ce code sauvegarde à la fermeture du programme la position et la taille de la fenêtre, en plus de l'état, maximiser ou normale, de celle-ci.
Ne pas porter attention au superflu et nom des variables,

Code : Tout sélectionner
;----- Constantes -----
Enumeration
#Tisseran
EndEnumeration
;----- Variables -----
Event = #Null
WindowX = #Null
WindowY = #Null
WindowWidth = #Null
WindowHeight = #Null
WindowFlags = #Null
;----- Initialisation -----
OpenPreferences("Préférences.txt")
PreferenceGroup("Fenêtre pricipale")
WindowX = ReadPreferenceInteger("Position en X", 64)
WindowY = ReadPreferenceInteger("Position en Y", 64)
WindowWidth = ReadPreferenceInteger("Largeur", 320)
WindowHeight = ReadPreferenceInteger("Hauteur", 240)
WindowFlags = ReadPreferenceInteger("État", 0)
ClosePreferences()
Select WindowFlags
Case 0:
WindowFlags = #PB_Window_Normal
Case 1:
WindowFlags = #PB_Window_Maximize
Default:
WindowFlags = #PB_Window_Normal
EndSelect
WindowFlags = #PB_Window_SystemMenu|WindowFlags|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget
;----- Démarrage -----
OpenWindow(#Tisseran, WindowX, WindowY, WindowWidth, WindowHeight, "Tisseran", WindowFlags)
;----- Boucle principale -----
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow:
Break
Case #PB_Event_SizeWindow:
If GetWindowState(#Tisseran) = #PB_Window_Normal
WindowWidth = WindowWidth(#Tisseran)
WindowHeight = WindowHeight(#Tisseran)
WindowFlags = 0
ElseIf GetWindowState(#Tisseran) = #PB_Window_Maximize
WindowFlags = 1
EndIf
Case #PB_Event_MoveWindow:
If GetWindowState(#Tisseran) = #PB_Window_Normal
WindowX = WindowX(#Tisseran)
WindowY = WindowY(#Tisseran)
WindowFlags = 0
ElseIf GetWindowState(#Tisseran) = #PB_Window_Maximize
WindowFlags = 1
EndIf
EndSelect
ForEver
;----- Fermeture -----
CreatePreferences("Préférences.txt")
PreferenceGroup("Fenêtre pricipale")
WritePreferenceInteger("Position en X", WindowX)
WritePreferenceInteger("Position en Y", WindowY)
WritePreferenceInteger("Largeur", WindowWidth)
WritePreferenceInteger("Hauteur", WindowHeight)
WritePreferenceInteger("État", WindowFlags)
ClosePreferences()
End