.............

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

.............

Message par Backup »

...................
Dernière modification par Backup le ven. 07/oct./2011 12:15, modifié 2 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Ar-S »

merci !
Et pour la faire réapparaitre ? :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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Chris »

Y a un moyen encore plus simple pour la faire disparaître:

Cliquer sur la croix en haut à droite.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Le Soldat Inconnu »

Alors la Dodro, tu t'es compliqué la vie :mrgreen:

Sans forcément avoir une fenêtre sous forme de ToolBar (D'ailleur, il y a l'option dans PB pour la création de fenêtre)

2 lignes de codes pour une fenêtre non visible dans la barre des tâches

Code : Tout sélectionner

OpenWindow(0, 0, 0, 200, 200, "Invisible", #PB_Window_Invisible)
OpenWindow(1, 0, 0, 600, 300, "Visible mais pas dans la barre des tâches", #PB_Window_SystemMenu | #PB_Window_ScreenCentered, WindowID(0))

Repeat
	
Until WaitWindowEvent() = #PB_Event_CloseWindow
Solution que tu aurais trouvé si tu avais utilisé la fonction recherche du forum :mrgreen: La tienne aussi d'ailleurs.

Et en passant, ton code est mauvais, pour changer le style, tu dois faire comme cela :

Code : Tout sélectionner

SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW) ; choix de la barre d'outil réduite
( GetWindowLongPtr est à préférer à GetWindowLong, vu ça sur msdn pour la compatilibé avec les application 64 bits)
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Backup »

Ar-S a écrit :merci !
Et pour la faire réapparaitre ? :mrgreen:
j'ai modifié le code pour pouvoir le faire :)

bouton droit elle disparait
bouton gauche elle réapparait !


@Soldat
Solution que tu aurais trouvé si tu avais utilisé la fonction recherche du forum :mrgreen: La tienne aussi d'ailleurs.
j'ai dis pourtant plus haut que certaines solutions proposaient de faire 2 fenêtres
ce qui m'a bien fait rire !! :roll: bonjour l'économie du systeme pour si peu ..
heureusement qu'il ne faille pas en faire 20 ... :lol:

la mienne ? j'ai jamais dis qu'elle etait de moi
de plus la version qui traine propose l'utilisation de Findwindow()
parfaitement inutile dans l'utilisation courante d'un prg ;)

GetWindowLongPtr est à préférer à GetWindowLong, vu ça sur msdn pour la compatilibé avec les application 64 bits
ha? ben pas de problème merci de ta précision, ya plus qu'a changer


ps : Voila c'est fait :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Le Soldat Inconnu »

J'ai le droit de corriger ? :D

alors, il a un petit "a" qui ne sert à rien, la méthode de changement du style est mauvaise, tu en vérifie pas que la fenêtre existe dans le mode=0, et on peut optimiser :wink:

ça donne

Code : Tout sélectionner

Procedure RemoveFromTaskbar(hWnd, Remove)
	Protected Area.RECT, hWnd_Parent
	If IsWindow_(hWnd)
		hWnd_Parent = GetAncestor_(hWnd, #GA_ROOT) : If hWnd_Parent <> 0 : hWnd = hWnd_Parent : EndIf
		ShowWindow_(hWnd, #SW_HIDE)
		GetWindowRect_(hWnd, Area.RECT)
		If Remove = 1
			SetWindowLong_(hWnd, #GWL_EXSTYLE, GetWindowLongPtr_(hWnd, #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW)
		Else
			SetWindowLong_(hWnd, #GWL_EXSTYLE, GetWindowLongPtr_(hWnd, #GWL_EXSTYLE) & ~#WS_EX_TOOLWINDOW)
		EndIf
		SetWindowPos_(hWnd, 0, 0, 0, Area\right - Area\left, Area\bottom - Area\top, #SWP_NOMOVE | #SWP_SHOWWINDOW)
		ProcedureReturn 1
	Else
		ProcedureReturn 0
	EndIf
EndProcedure



#window = 1

OpenWindow(#window, 100, 100, 300, 170, "Mp3_list", #PB_Window_SystemMenu)

; soit on appel comme ça :


Repeat
	Event = WaitWindowEvent()
	Select Event
		Case #WM_RBUTTONDOWN
			RemoveFromTaskbar(WindowID(#window), 1) ; fait disparaitre la fenetre
		Case #WM_LBUTTONDOWN
			RemoveFromTaskbar(WindowID(#window), 0) ; fait réaparaitre la fenetre
	EndSelect
Until Event = #PB_Event_CloseWindow
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Backup »

Merci :)
ton code a été coloré et a remplacé l'autre :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Ar-S »

Le Soldat Inconnu a écrit :J'ai le droit de corriger ? :D

alors, il a un petit "a" qui ne sert à rien, la méthode de changement du style est mauvaise, tu en vérifie pas que la fenêtre existe dans le mode=0, et on peut optimiser :wink:

ça donne

Code : Tout sélectionner

Procedure RemoveFromTaskbar(hWnd, Remove)
	Protected Area.RECT, hWnd_Parent
	If IsWindow_(hWnd)
		hWnd_Parent = GetAncestor_(hWnd, #GA_ROOT) : If hWnd_Parent <> 0 : hWnd = hWnd_Parent : EndIf
		ShowWindow_(hWnd, #SW_HIDE)
		GetWindowRect_(hWnd, Area.RECT)
		If Remove = 1
			SetWindowLong_(hWnd, #GWL_EXSTYLE, GetWindowLongPtr_(hWnd, #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW)
		Else
			SetWindowLong_(hWnd, #GWL_EXSTYLE, GetWindowLongPtr_(hWnd, #GWL_EXSTYLE) & ~#WS_EX_TOOLWINDOW)
		EndIf
		SetWindowPos_(hWnd, 0, 0, 0, Area\right - Area\left, Area\bottom - Area\top, #SWP_NOMOVE | #SWP_SHOWWINDOW)
		ProcedureReturn 1
	Else
		ProcedureReturn 0
	EndIf
EndProcedure



#window = 1

OpenWindow(#window, 100, 100, 300, 170, "Mp3_list", #PB_Window_SystemMenu)

; soit on appel comme ça :


Repeat
	Event = WaitWindowEvent()
	Select Event
		Case #WM_RBUTTONDOWN
			RemoveFromTaskbar(WindowID(#window), 1) ; fait disparaitre la fenetre
		Case #WM_LBUTTONDOWN
			RemoveFromTaskbar(WindowID(#window), 0) ; fait réaparaitre la fenetre
	EndSelect
Until Event = #PB_Event_CloseWindow
Ce code n'accepte pas de se fermer chez moi, obligé de CtrlAltSupprer.
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Backup »

Ar-S a écrit : Ce code n'accepte pas de se fermer chez moi, obligé de CtrlAltSupprer.
heu t'es sur ??

chez moi marche bien Xp Sp3

j'espere que ça marche chez toi, parceque j'ai fais confiance au soldat
et je n'ai plus ma version du début qui fonctionnait chez toi , j'ai remplacé par celle-ci... :?

en plus ça équipe mon pure_radio ....

m'est avis, que tu devais avoir un autre truc qui a fais planter ton ordi ...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Le Soldat Inconnu »

Testé sous 7 x64 pour ma part. Et ça marche très bien (je viens de retester pour être sur)
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
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: faire disparaitre une fenetre de la barre des taches !!

Message par case »

par contre elle change de trogne esthétiquement la fenêtre
ImageImage
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: faire disparaitre une fenetre de la barre des taches !!

Message par Le Soldat Inconnu »

forcément puisque ce code la passe sous forme de toolwindow.

Cadeau, la même chose sans changement de style :)

Code : Tout sélectionner

Procedure RemoveFromTaskbar(hWnd, Remove)
		Protected Area.RECT, hWnd_Parent
		If IsWindow_(hWnd)
				hWnd_Parent = GetAncestor_(hWnd, #GA_ROOT) : If hWnd_Parent <> 0 : hWnd = hWnd_Parent : EndIf
				ShowWindow_(hWnd, #SW_HIDE)
				
				If Remove = 1
					SetWindowLongPtr_(hWnd, #GWL_HWNDPARENT, FindWindow_(0, "program manager"))
				Else
					SetWindowLongPtr_(hWnd, #GWL_HWNDPARENT, 0)
				EndIf
				
				ShowWindow_(hWnd, #SW_SHOW)
				ProcedureReturn 1
		Else
				ProcedureReturn 0
		EndIf
EndProcedure



#window = 1

OpenWindow(#window, 100, 100, 300, 170, "Mp3_list", #PB_Window_SystemMenu)

; soit on appel comme ça :


Repeat
		Event = WaitWindowEvent()
		Select Event
				Case #WM_RBUTTONDOWN
						RemoveFromTaskbar(WindowID(#window), 1) ; fait disparaitre la fenetre
				Case #WM_LBUTTONDOWN
						RemoveFromTaskbar(WindowID(#window), 0) ; fait réaparaitre la fenetre
		EndSelect
Until Event = #PB_Event_CloseWindow
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)]
Répondre