Redefinir les options d'une fenêtre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Redefinir les options d'une fenêtre

Message 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
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Redefinir les options d'une fenêtre

Message par jbernard13 »

explique toi que tu veux faire svp .
Jbernard13
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Redefinir les options d'une fenêtre

Message 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
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Redefinir les options d'une fenêtre

Message 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.
~~~~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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Redefinir les options d'une fenêtre

Message 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.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Redefinir les options d'une fenêtre

Message 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 ? :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Redefinir les options d'une fenêtre

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Redefinir les options d'une fenêtre

Message par MLD »

Salut LSI

Heu! chez moi ce code de fonctionne pas :?:
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Redefinir les options d'une fenêtre

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

Re: Redefinir les options d'une fenêtre

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

Re: Redefinir les options d'une fenêtre

Message 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 !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Redefinir les options d'une fenêtre

Message 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 :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Redefinir les options d'une fenêtre

Message par jbernard13 »

je viens de passer sous Seven64 et le code marche tres bien
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Redefinir les options d'une fenêtre

Message 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 ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Redefinir les options d'une fenêtre

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre