Juste un petit code sur lequel j'ai mijoter un peu à cause des fonctions de placement automatique de Windows 7.
C'est un système qui enregistre dans un fichier de préférences la position et le statut d'une fenêtre, ce qui lui permet de rétablir son format à la réouverture du programme, comme un professionnel!

Ne pas se préoccuper des noms, c'est un extrait de mon code. Aussi, j'ai inclus le fait de quitter en minimisé rouvre en minimisé. C'est seulement pour démonstration, suffit de modifier la boucle principale pour enlever ce petit détail.
Bon usage!
Code : Tout sélectionner
;---- Constantes --------------------------------------------------------------
Enumeration
#Marion
EndEnumeration
;---- Variables ---------------------------------------------------------------
MarionW.w = 640
MarionH.w = 480
MarionMax.b = 0
MarionMin.b = 0
MarionX.w = 32
MarionY.w = 32
MarionF.i = #PB_Window_Normal|#PB_Window_SystemMenu|#PB_Window_SizeGadget
MarionF = MarionF|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget
;---- Initialisation ----------------------------------------------------------
If OpenPreferences("Préférences.ini")
PreferenceGroup("Général")
MarionW = ReadPreferenceInteger("Largeur", 640)
MarionH = ReadPreferenceInteger("Hauteur", 480)
MarionMax = ReadPreferenceInteger("Maximiser", 0)
MarionMin = ReadPreferenceInteger("Minimiser", 0)
MarionX = ReadPreferenceInteger("Position X", 32)
MarionY = ReadPreferenceInteger("Position Y", 32)
ClosePreferences()
Else
;Erreur!
End
EndIf
If MarionMin = 1 : MarionF = MarionF|#PB_Window_Minimize : EndIf
If OpenWindow(#Marion, MarionX, MarionY, MarionW, MarionH, "Marion", MarionF)
;...
Else
;Erreur!
End
EndIf
If MarionMax = 1 : SetWindowState(#Marion, #PB_Window_Maximize) : EndIf
;---- Programme et boucle principale ------------------------------------------
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_SizeWindow
If GetWindowState(#Marion) = #PB_Window_Normal
MarionW = WindowWidth(#Marion)
MarionH = WindowHeight(#Marion)
EndIf
Case #PB_Event_MoveWindow
If GetWindowState(#Marion) = #PB_Window_Normal
MarionX = WindowX(#Marion)
MarionY = WindowY(#Marion)
EndIf
EndSelect
If GetWindowState(#Marion) = #PB_Window_Maximize : MarionMax = 1 : EndIf
If GetWindowState(#Marion) = #PB_Window_Minimize : MarionMin = 1 : EndIf
If GetWindowState(#Marion) = #PB_Window_Normal
MarionMax = 0
MarionMin = 0
EndIf
ForEver
;---- Fermeture ---------------------------------------------------------------
If CreatePreferences("Préférences.ini")
PreferenceGroup("Général")
WritePreferenceInteger("Largeur", MarionW)
WritePreferenceInteger("Hauteur", MarionH)
WritePreferenceInteger("Maximiser", MarionMax)
WritePreferenceInteger("Minimiser", MarionMin)
WritePreferenceInteger("Position X", MarionX)
WritePreferenceInteger("Position Y", MarionY)
ClosePreferences()
Else
;Erreur!
End
EndIf
End