Page 1 sur 1

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

Publié : dim. 16/janv./2011 14:34
par Backup
...................

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

Publié : dim. 16/janv./2011 15:14
par Ar-S
merci !
Et pour la faire réapparaitre ? :mrgreen:

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

Publié : dim. 16/janv./2011 15:49
par Chris
Y a un moyen encore plus simple pour la faire disparaître:

Cliquer sur la croix en haut à droite.

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

Publié : dim. 16/janv./2011 16:02
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)

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

Publié : dim. 16/janv./2011 16:35
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 :)

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

Publié : dim. 16/janv./2011 19:30
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

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

Publié : dim. 16/janv./2011 20:13
par Backup
Merci :)
ton code a été coloré et a remplacé l'autre :)

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

Publié : dim. 16/janv./2011 21:02
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.

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

Publié : lun. 17/janv./2011 1:17
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 ...

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

Publié : lun. 17/janv./2011 19:21
par Le Soldat Inconnu
Testé sous 7 x64 pour ma part. Et ça marche très bien (je viens de retester pour être sur)

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

Publié : lun. 17/janv./2011 20:52
par case
par contre elle change de trogne esthétiquement la fenêtre

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

Publié : lun. 17/janv./2011 22:55
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