.............
Publié : dim. 16/janv./2011 14:34
...................
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
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
j'ai modifié le code pour pouvoir le faireAr-S a écrit :merci !
Et pour la faire réapparaitre ?
j'ai dis pourtant plus haut que certaines solutions proposaient de faire 2 fenêtresSolution que tu aurais trouvé si tu avais utilisé la fonction recherche du forumLa tienne aussi d'ailleurs.
ha? ben pas de problème merci de ta précision, ya plus qu'a changerGetWindowLongPtr est à préférer à GetWindowLong, vu ça sur msdn pour la compatilibé avec les application 64 bits
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.Le Soldat Inconnu a écrit :J'ai le droit de corriger ?![]()
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![]()
ça donneCode : 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
heu t'es sur ??Ar-S a écrit : Ce code n'accepte pas de se fermer chez moi, obligé de CtrlAltSupprer.
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