Page 1 sur 1

Cacher une fenêtre dans la barre des tâches

Publié : mar. 19/avr./2011 15:20
par ProgrammeurC
Bonjour tout le monde !
J'ai besoin de votre aide pour une petit chose qui me pose problème:
dans mon application je voudrai que lorsque je crée une fenêtre avec OpenWindow(), le titre de la fenêtre n'apparaisse pas dans la barre des tâches sous Windows pour plusieurs raisons mais principalement:
1.C'est moche
2.C'est nul de se retrouver avec 1000 fenêtres dans la barre des tâches ![/list]
Je remercie les gens qui voudront bien m'aider, je demande seulement un exemple ou un bout de code, merci !

Re: Cacher une fenêtre dans la barre des tâches

Publié : mar. 19/avr./2011 15:34
par jbernard13
salut

je sais pas quel window tu utilise

sinon essaye ça

Code : Tout sélectionner


Enumeration
  #main
EndEnumeration



If OpenWindow(#main,0,0,180,70,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

      EndIf
  
Repeat 
  Select WaitWindowEvent()
    
  Case #PB_Event_CloseWindow
      Quit = #True
  EndSelect
Until Quit
End 
 

Re: Cacher une fenêtre dans la barre des tâches

Publié : mar. 19/avr./2011 16:21
par MLD
Salut
Je pense a ceci. Uniquement avec des toolWindows

Code : Tout sélectionner

Enumeration
#fenstat
EndEnumeration


OpenWindow(#fenstat, 0, 0,860,520,  "",#PB_Window_ScreenCentered| #PB_Window_Invisible) 
SetWindowLong_(WindowID(#fenstat), #GWL_EXSTYLE, GetWindowLong_(WindowID(#fenstat), #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW)
HideWindow(#fenstat, 0)
StickyWindow(#fenstat, 1)



Repeat
  Event = WaitWindowEvent()
  
  
Until event = #PB_Event_CloseWindow    


Hé JB13 ton truc ne cache rien.

Re: Cacher une fenêtre dans la barre des tâches

Publié : mar. 19/avr./2011 18:02
par falsam
Quitte à utiliser du ToolWindow, autant le faire comme ça.

Code : Tout sélectionner

Enumeration
  #MainForm
EndEnumeration

Procedure MainFormShow()
  OpenWindow(#MainForm,0,0,400,300,"Test",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Tool | #PB_Window_SizeGadget)
EndProcedure

MainFormShow()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget

    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Dans cette exemple l'icone n’apparaît pas dans la barre de tache de window.

Re: Cacher une fenêtre dans la barre des tâches

Publié : mar. 19/avr./2011 22:26
par ProgrammeurC
Merci pour vos réponses les gens !
falsam je recherche le même effet qu'avec une toolwindow mais avec une fenêtre normale, ça fait assez moche une toolwindow comme écran principal :(
Vous connaîtriez pas une fonction permettant de ne pas afficher une fenêtre dans la barre des tâches ?
En fait si quelqu'un connaît vb.net, c'est comme quand on demande une seule fenêtre affichée dans la barre des tâches et le reste s'affiche juste sur l'écran, pas en bas...
Si vous connaissez pas, j'utiliserai des toolwindow mais si ça existe sur vb.net pourquoi pas sur PureBasic ? :D
Je vais faire quelques recherches de mon côté aussi !

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 8:28
par MLD
Salut

Comme ceci. (D'aprés un échange entre Dobro et le Soldat inconnu )

Code : Tout sélectionner

Procedure RemoveFromTaskbar(hWnd)
      Protected Area.RECT, hWnd_Parent
      If IsWindow_(hWnd)
         SetWindowLongPtr_(hWnd, #GWL_HWNDPARENT, FindWindow_(0, ""))
       EndIf     
EndProcedure    



#window = 1

OpenWindow(#window, 100, 100, 300, 170, "Test", #PB_Window_SystemMenu)
 RemoveFromTaskbar(WindowID(#window)) 
 
Repeat
      Event = WaitWindowEvent()
      Select Event
      
      
      EndSelect
Until Event = #PB_Event_CloseWindow       

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 10:53
par ProgrammeurC
MLD, c'est avec l'API Windows ton code ? Parce que je trouve pas la structure RECT, s'il faut la version complète de PureBasic il faudrat que j'attende un petit peu avant de pouvoir l'utiliser alors... :(

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 12:21
par falsam
ProgrammeurC a écrit : ...c'est comme quand on demande une seule fenêtre affichée dans la barre des tâches et le reste s'affiche juste sur l'écran, pas en bas...
Donc je résume : On ouvre la fenêtre principale de l’application qui va s'afficher dans la barre des taches de windows puis on ouvre d'autres fenêtres (toujours dans la même application) qui n’apparaîtront pas dans la barre des taches.

Tu vas pour cela ouvrir chacune de tes fenêtres en ajoutant comme paramètre WindowID(#Mafenetreprincipale)

Exemple pour étayer cela

Code : Tout sélectionner

Enumeration
  #MainForm
  #Btn_OpenForm
  #SecondForm
EndEnumeration

;Fenetre principale
Procedure MainFormShow()
  OpenWindow(#MainForm,0,0,800,600,"Premiére Fenetre",#PB_Window_ScreenCentered |#PB_Window_SizeGadget | #PB_Window_SystemMenu)
  ButtonGadget(#Btn_OpenForm, 700,20,80,20,"Open Form")
EndProcedure

Procedure SecondFormShow()
  OpenWindow(#SecondForm,0,0,400,300,"Deuxiéme fenetre",#PB_Window_ScreenCentered | #PB_Window_SystemMenu, WindowID(#MainForm))
EndProcedure

MainFormShow()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_OpenForm
          SecondFormShow()
      EndSelect
      

    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #MainForm
          End
          
        Case #SecondForm
          CloseWindow(#SecondForm)
    
      EndSelect
      
  EndSelect
ForEver

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 14:28
par MLD
ProgrammeurC a écrit :MLD, c'est avec l'API Windows ton code ? Parce que je trouve pas la structure RECT, s'il faut la version complète de PureBasic il faudrat que j'attende un petit peu avant de pouvoir l'utiliser alors... :(
OUI. Tu aura souvent besoin des APIS alors! :wink:
@ falsam
Oui c'est possible comme ceci, mais les fenêtres secondaires ne sont pas indépendantes, ce qui pose des problèmes s'il y en a plus de 2 ou 3. C'est un sujet qui revient souvent sur les forums PB.

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 15:45
par ProgrammeurC
Merci beaucoup tout le monde !
Je vais garder la méthode de falsam (merci à toi :D ! )
PS: pour info, je garde la solution avec les ToolWindow ;)
(Sujet résolu)

Re: Cacher une fenêtre dans la barre des tâches

Publié : mer. 20/avr./2011 23:30
par Le Soldat Inconnu
Et tout simplement comme cela ?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 100, 100, "Cachée", #PB_Window_Invisible | #PB_Window_NoGadgets) = 0
  End
EndIf

If OpenWindow(1, 0, 0, 500, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, WindowID(0)) = 0
  End
EndIf

Repeat
  Event = WaitWindowEvent()
  
  Select Event
		Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
			EndSelect
      
		Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
          
			EndSelect
	EndSelect
  
Until Event = #PB_Event_CloseWindow

Re: Cacher une fenêtre dans la barre des tâches

Publié : jeu. 21/avr./2011 18:40
par ProgrammeurC
Merci Le Soldat Inconnu, c'est un bon moyen pour mon projet, enfin il faudra que je re-code quelques trucs mais ce sera pas la mort, merci !