Seite 1 von 1

Window transparent und nicht in Taskleiste?

Verfasst: 11.10.2005 04:49
von Kai
Das folgende Beispiel geht soweit ja super, nur ist das Fenster dann wieder inner Taskleiste zu sehen, sobald man nen Butten ect betätigt,
gibts nicht auch ne andere Möglichkeit das das window sowohl transparent wie auch aus der Taskbar bleibt?

Will nur ein Programm haben, was ich später NUR über ein Systray Icon steuere.

Code: Alles auswählen

hwnd = OpenWindow(0,0,0,230,90,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible,"Verschieb mich !")
  If hwnd
   If CreateGadgetList(WindowID())
    ButtonGadget  (1, 10, 10,200, 20, "Klick mich")
    CheckBoxGadget(2, 10, 40,200, 20, "Markiere mich")
   EndIf
 
  If CreateMenu(0, WindowID())
    MenuTitle("Menu")
    MenuItem(1, "Eintrag 1")
    MenuItem(2, "Eintrag 2")
    MenuItem(3, "Eintrag 3")
  EndIf
 
  ; es wirkt leider nur: Fenster immer oben (#HWND_TOPMOST)
  SetWindowPos_(WindowID(0), #HWND_TOPMOST, 0, 0, 0, 0,#SWP_NOMOVE | #SWP_NOSIZE)
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) ; Fenster nich in der Taskbar anzeigen
 
  HideWindow(0, 0) ; Jetzt erst Fenster zeichnen lassen
  
  SetWindowOpacity(hwnd,100) ;Transparent
  
  WinX = WindowX() ; X Position retten
  WinY = WindowY() ; y Position retten
   
  Repeat
    EventID = WaitWindowEvent()
   
    Select EventID
     
      Case #WM_MOVE ; Wenn Fensterbewegung ....
        MoveWindow(WinX,WinY) ; .....Fenster auf alte Position zurück setzen
     
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case 1 : Debug "Schalter 1 angeklickt!"
          Case 2 : Debug "Schalter 2 angeklickt!"
          Case 3 : Debug "Schalter 3 angeklickt!"
        EndSelect
       
      Case #PB_Event_Menu
        Select EventMenuID()
          Case 1 : Debug "Menü-Eintrag 1 angeklickt!"
          Case 2 : Debug "Menü-Eintrag 2 angeklickt!"
          Case 3 : Debug "Menü-Eintrag 3 angeklickt!"
        EndSelect
    EndSelect
   
  Until EventID = #PB_Event_CloseWindow
EndIf 

Verfasst: 11.10.2005 08:13
von Forgotten Tomb
Guten morgen,

keine ahnung ob du damit etwas anfangen kannst, aber so geht es eigentlich!

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1988&highlight=
; Author: Christian Stransky (CS2001) 
; Date: 15. August 2003 

Procedure HideWindowFromShowingInTaskbar(WindowID, NewWindowHandle, show) 
  If show=1 
    HideWindow(WindowID,1) 
  EndIf 
  SetWindowLong_(WindowID(WindowID),#GWL_HWNDPARENT,NewWindowHandle) 
  If show=1 
    HideWindow(WindowID,0) 
  EndIf 
  ProcedureReturn 
EndProcedure 

OpenWindow(1, 0, 0, 0, 0, #PB_Window_ScreenCentered, "Not Needed") 
HideWindow(1,1) 

OpenWindow(0,0,0,400,100,#PB_Window_ScreenCentered|#PB_Window_SystemMenu, "Not shown in the Taskbar") 
CreateGadgetList(WindowID()) 
  ButtonGadget(0, 0, 0, 200, 100, "Hide Window from showing in Taskbar") 
  ButtonGadget(1, 200, 0, 200, 100, "Show Window in Taskbar") 
  DisableGadget(1,1) 
  
Repeat 
  EventID=WaitWindowEvent() 
  Select EventID 
    Case #PB_Event_Gadget 
      Select EventGadgetID() 
        Case 0 
          HideWindowFromShowingInTaskbar(0, WindowID(1), 0) 
          DisableGadget(0,1) 
          DisableGadget(1,0) 
        Case 1 
          HideWindowFromShowingInTaskbar(0, 0, 1) 
          DisableGadget(0,0) 
          DisableGadget(1,1) 
      EndSelect 
  EndSelect 
Until EventID=#PB_Event_CloseWindow 

; ExecutableFormat=Windows
; FirstLine=1
; EnableXP
; EOF

Verfasst: 11.10.2005 14:28
von Kai
Cool, geht, thx...

Nur was genau wird da gemacht? Warum erstell ich 2 Fenster?

Verfasst: 11.10.2005 14:34
von Kiffi
> Warum erstell ich 2 Fenster?

Du erstellst ein Parentfenster und ein darin vorhandenes Childfenster.
Normalerweise würde nun nur das Parentfenster in der Taskbar erscheinen.
Und das wird verhindert, indem man es unsichtbar schaltet.

Grüße ... Kiffi

Verfasst: 11.10.2005 14:43
von Kai
Asoo, goiler Trick. :allright:

Verfasst: 11.10.2005 18:05
von Batze
Das hättest du auch mit der Suche gefunden.
http://forums.purebasic.com/german/viewtopic.php?t=4058

Verfasst: 04.10.2007 18:47
von Scarabol
Nur mal sonne Frage: Gabs HideWindow() noch nicht?

Gruß
Scarabol

Verfasst: 04.10.2007 20:33
von Kiffi
Scarabol hat geschrieben:Gabs HideWindow() noch nicht?
meinst Du in 2005? Guck Dir mal den Source von Forgotten Tomb ein wenig
genauer an.

Grüße ... Kiffi