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 :mrgreen:
"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 :D
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

Code : Tout sélectionner

UpdateWindow_(WindowID(#Window_0))
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