Sauvegarde de la position de la fenêtre

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Sauvegarde de la position de la fenêtre

Message 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

Dernière modification par Warkering le mer. 09/mars/2011 21:30, modifié 2 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sauvegarde de la position de la fenêtre

Message par Ar-S »

Ajoute tout de même des IF histoire qu'il ni ai pas de surprise (If OpenPreferences() etc..)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Sauvegarde de la position de la fenêtre

Message 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:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sauvegarde de la position de la fenêtre

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Sauvegarde de la position de la fenêtre

Message par Warkering »

Tiens mon beau Ar-S, c'est corrigé! :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sauvegarde de la position de la fenêtre

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sauvegarde de la position de la fenêtre

Message par Ar-S »

Image commmeennnnttt ? :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Sauvegarde de la position de la fenêtre

Message 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.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Sauvegarde de la position de la fenêtre

Message par dayvid »

Super ce code
grand merci :D
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre