Page 1 sur 2
Redefinir les options d'une fenêtre
Publié : lun. 11/avr./2011 12:43
par dayvid
Comment je fait pour redéfinir plus tard les options d'une fenêtre ?
#PB_Window_SystemMenu
#PB_Window_MinimizeGadget
#PB_Window_MaximizeGadget
#PB_Window_SizeGadget
#PB_Window_Invisible
#PB_Window_TitleBar
#PB_Window_BorderLess
#PB_Window_Tool
#PB_Window_ScreenCentered
#PB_Window_WindowCentered
#PB_Window_Maximize
#PB_Window_Minimize
#PB_Window_NoGadgets
Re: Redefinir les options d'une fenêtre
Publié : lun. 11/avr./2011 13:16
par jbernard13
explique toi que tu veux faire svp .
Re: Redefinir les options d'une fenêtre
Publié : lun. 11/avr./2011 13:22
par dayvid
Oui
Quand tu crée une fenêtre, tu lui donne des option d'accord
et bien moi je voudrait changer ces option plus tard tu comprend
Re: Redefinir les options d'une fenêtre
Publié : lun. 11/avr./2011 14:03
par Ar-S
Pour ce qui est de l'état de la fenêtre (minimiser, maximiser et normal), utilise SetWindowState(#taFenêtre,#PB_Window_Normal) etc..
pour le centrer mes fenêtre, j'utilise resizewindow en ayant avant capturé la taille de l'écran.
Pour invisible = > HideWindow()
nogadget => HideGadget ou DisableGadget selon que tu souhaites les faire disparaitre ou seulement les désactiver..
Regarde les commandes commençant par Set dans la doc.
Re: Redefinir les options d'une fenêtre
Publié : lun. 11/avr./2011 18:41
par Le Soldat Inconnu
Après pour les bordures par exemple, il faut passer par l'API.
Avec un code d'exemple, je me ferais un plaisir de compléter les fonctions qui te manque.
Sinon, tu peux regarder ce code
http://www.purebasic.fr/french/viewtopi ... =3&t=11360
il comporte ce que tu cherches quand tu fais clic droit sur l'élément "Style" d'une fenêtre.
Re: Redefinir les options d'une fenêtre
Publié : mer. 13/avr./2011 13:12
par dayvid
Heu, Merci beaucoup Le Solda Inconnu
Tu veux un exemple ?
Bin par exemple tu ouvre une fenêtre avec toutes les options souhaiter :
Code : Tout sélectionner
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 559, 224, 600, 300, "Ma fenêtre", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(#Window_0))
EndIf
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
EndIf
EndProcedure
Open_Window_0()
Violà et donc la je voudrait par exemple plus tard changer ses options
Par exemple qu’on ne puisse plus la maximiser ou minimiser
Faire disparaitre la Barre de titre, etc etc.
Est-ce que je suis asses claire ?
Attention, je pense anticiper ce que vous aller me dire
"et bien ferme la fenêtre et recrée la avec les options voulue !"
Oui mais FAUX, il ne faut pas qu’on ferme la fenêtre
Par exemple pour ne pas perdre les modifications sur celle-ci
C'est possible au moins de faire ça ?

Re: Redefinir les options d'une fenêtre
Publié : jeu. 14/avr./2011 21:42
par Le Soldat Inconnu
voilà déjà un exemple pour retirer la bordure, désactiver le bouton minimiser ou le bouton maximiser
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
If OpenWindow(#Window_0, 0, 0, 600, 300, "Ma fenêtre", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
ButtonGadget(0, 5, 5, 290, 25, "Retirer la bordure")
ButtonGadget(1, 305, 5, 290, 25, "Remettre la bordure")
ButtonGadget(2, 5, 35, 290, 25, "Retirer le bouton minimiser")
ButtonGadget(3, 305, 35, 290, 25, "Remettre le bouton minimiser")
ButtonGadget(4, 5, 65, 290, 25, "Retirer le bouton maximiser")
ButtonGadget(5, 305, 65, 290, 25, "Remettre le bouton maximiser")
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
Select GadgetID
Case 0
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_TILEDWINDOW)
Case 1
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_TILEDWINDOW)
Case 2
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_MINIMIZEBOX)
Case 3
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_MINIMIZEBOX)
Case 4
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_MAXIMIZEBOX)
Case 5
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_MAXIMIZEBOX)
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
EndIf
Ensuite le principe est le même pour tout les autres styles, il faut regarder la liste sur msdn
Re: Redefinir les options d'une fenêtre
Publié : ven. 15/avr./2011 7:54
par MLD
Salut LSI
Heu! chez moi ce code de fonctionne pas

Re: Redefinir les options d'une fenêtre
Publié : ven. 15/avr./2011 10:55
par jbernard13
MLD a écrit :Salut LSI
Heu! chez moi ce code de fonctionne pas

moi aussi je suis sous xp , il faut a chaque fois baisser la fenetre pour que ça marche .
Re: Redefinir les options d'une fenêtre
Publié : ven. 15/avr./2011 11:43
par Ar-S
Sur 7 ça marche en tout cas.
Pour ce qui est des boutons max et min, lorsqu'on en fait disparaitre un, il se désactive sans disparaitre.
C'est seulement si on désactive le second que les 2 disparaissent. Étrange ce comportement.
Re: Redefinir les options d'une fenêtre
Publié : ven. 15/avr./2011 13:22
par dayvid
Merci LSI
Moi sa ne marche pas sous sevent enfin pas tous, seule la désactivation des boutons marche
mais il ne disparaisse pas (foutue api de m......) tu change de système d'exploitation et plus rien ne marche
Je testerais sous vista !
Re: Redefinir les options d'une fenêtre
Publié : sam. 16/avr./2011 14:37
par dayvid
Bonjour !
LSI, ton code marche a merveil sur vista, superbe, merci a toi

j'ai même r'ajouté une fonction pour désactiver et réaciver le bouton fermer

Re: Redefinir les options d'une fenêtre
Publié : sam. 16/avr./2011 15:14
par jbernard13
je viens de passer sous Seven64 et le code marche tres bien
Re: Redefinir les options d'une fenêtre
Publié : dim. 17/avr./2011 20:54
par Le Soldat Inconnu
Sinon, il faut un WindowUpdate_(
comme cela :
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
If OpenWindow(#Window_0, 0, 0, 600, 300, "Ma fenêtre", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
ButtonGadget(0, 5, 5, 290, 25, "Retirer la bordure")
ButtonGadget(1, 305, 5, 290, 25, "Remettre la bordure")
ButtonGadget(2, 5, 35, 290, 25, "Retirer le bouton minimiser")
ButtonGadget(3, 305, 35, 290, 25, "Remettre le bouton minimiser")
ButtonGadget(4, 5, 65, 290, 25, "Retirer le bouton maximiser")
ButtonGadget(5, 305, 65, 290, 25, "Remettre le bouton maximiser")
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
Select GadgetID
Case 0
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_TILEDWINDOW)
UpdateWindow_(WindowID(#Window_0))
Case 1
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_TILEDWINDOW)
UpdateWindow_(WindowID(#Window_0))
Case 2
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_MINIMIZEBOX)
UpdateWindow_(WindowID(#Window_0))
Case 3
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_MINIMIZEBOX)
UpdateWindow_(WindowID(#Window_0))
Case 4
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style & ~#WS_MAXIMIZEBOX)
UpdateWindow_(WindowID(#Window_0))
Case 5
; On récupère le style de la fenêtre
Style = GetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE)
; On modifie le style
SetWindowLongPtr_(WindowID(#Window_0), #GWL_STYLE, Style | #WS_MAXIMIZEBOX)
UpdateWindow_(WindowID(#Window_0))
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
EndIf
Est-ce que cela fonctionne pour tout le monde ?
Re: Redefinir les options d'une fenêtre
Publié : lun. 18/avr./2011 8:25
par Kwai chang caine
Juste pour info, pour moi ça marche pas du tout, aucun effet avec la v4.51 , XP PRO
J'ai meme essayé de remplacer le
par
Code : Tout sélectionner
RedrawWindow_(WindowID(#Window_0), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
pour essayer de redessiner la fenetre plutot que de l'updater, mais rien n'y fait