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