Page 1 sur 1

Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 5:38
par Warkering
Bonjour!
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! :wink:

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


Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 7:34
par Ar-S
Ajoute tout de même des IF histoire qu'il ni ai pas de surprise (If OpenPreferences() etc..)

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 8:14
par Warkering
Ils sont dans le programme, seulement je les aies retirer puisqu'ils sont plutôt lourds et sans importance dans le contexte. :wink:

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 8:21
par Ar-S
Warkering a écrit :Ils sont dans le programme, seulement je les aies retirer puisqu'ils sont plutôt lourds et sans importance dans le contexte. :wink:
Il faut se mettre dans la peau d'un débutant qui risque de prendre tes lignes de codes comme parole d'évangile.

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 21:31
par Warkering
Tiens mon beau Ar-S, c'est corrigé! :)

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 22:41
par falsam
ça me rappelle ton précédent post Warkering. Sans doute l'age :roll:
http://www.purebasic.fr/french/viewtopi ... =6&t=11104

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 22:57
par Ar-S
Image commmeennnnttt ? :mrgreen:

Re: Sauvegarde de la position de la fenêtre

Publié : mer. 09/mars/2011 22:57
par Warkering
Je n'avais pas encore ajouté de le supprimer, c'est exactement le code que j'utilisais avant, mais qui faisait des siennes! :lol:
Mais comme il n'y a plus que Fred comme modérateur dans le coin (Bah, y'a LSI et ... Je sais plus trop qui mais bon.), j'ai pas encore fait de move.

Re: Sauvegarde de la position de la fenêtre

Publié : ven. 25/mars/2011 15:13
par dayvid
Super ce code
grand merci :D