Minimieren in SysTray über Taste in der Titelleiste

Anfängerfragen zum Programmieren mit PureBasic.
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Minimieren in SysTray über Taste in der Titelleiste

Beitrag von ThoPie »

Hallo,
bei manchen Anwendungen gibt es in der Titelleiste neben den drei Standardsymbolen eine Taste (mit Punktsymbol) mit der ein Minimieren in den SysTray möglich ist.
Kann mir bitte jemand einen Tipp geben, wie ich das hinkriege.
Vielen Dank.
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Ist zwar nicht ganz das was du suchst aber eine Lösung
Damit kannst du dir eigene Schaltflächen erstellen:
http://www.purebasic.fr/german/viewtopi ... 40&start=3
Da kannst du dir nen Punkt machen und wenn du draufklickst, wird einfach das Fenster geschlossen. Im Systray kannste ja dann ein Menü machen, mit Menuitem "Öffnen", und das Fenster geht wieder auf
Win11 x64 | PB 6.20
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Ich wuesste einen Weg, wie du das Programm in das Systray 'minimierst' - allerdings weiss ich nicht wie man diesen "punkt" oben rechts am fenster erscheinen laesst. Falls du wissen willst, wie du dein Programm in den Systray minimieren laesst, habe ich eine Loesung fuer dich - allerdings ueber einen ButtonGadget() anstelle des "Punktes":

In der Mainloop ueberpruefst du einfach per #PB_Event_Gadget ob der Button gedrueckt wurde... wenn ja, fuegst du der systray mittels AddSysTrayIcon() nen Icon hinzu. Anschliessend schliesst ("versteckst") das Fenster, solange, bis auf das Icon in der Systray geklickt wurde...

Ich habe hierzu einen Code gebastelt, der auch funktioniert!

Code: Alles auswählen

OpenWindow(0, 0, 0, 200, 200, "Systray-Minimierung", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SystemMenu)

CreateGadgetList(WindowID(0))
ButtonGadget(0, 80, 80, 40, 20, "Min!") ;Button

LoadImage(0, "icon.ico") ;irgendein Icon

Repeat
  EventID = WindowEvent()
  
  If EventID = #PB_Event_Gadget
    If EventGadget() = 0                            ;wenn der Button gedrueckt wurde...
      AddSysTrayIcon(0, WindowID(0), ImageID(0))    ;...erstelle ein Icon...
      HideWindow(0, 1)                              ;...und verstecke das Fenster
    EndIf
  ElseIf EventID = #PB_Event_SysTray                ;wenn auf das Icon geklickt wurde...
    RemoveSysTrayIcon(0)                            ;...entferne das Icon...
    HideWindow(0, 0)                                ;und zeige das fenster!
  EndIf
  
  Delay(1)
Until EventID = #PB_Event_CloseWindow
Zusaetzliches kannst du ja nach Bedarf aendern... (z.B. wenn du willst, dass das Icon IMMER angezeigtg wird, einfach die Funktion RemoveSysTrayIcon() entfernen und die Funktion AddSysTrayIcon() vor Beginn der Mainloop setzen)...

Ich hoffe ich konnte helfen...
Bild + Bild

Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Hupps, 2 Sekunden zu langsam! <)
Win11 x64 | PB 6.20
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Andesdaf hat geschrieben:Hupps, 2 Sekunden zu langsam! <)
ja, das kann echt aufregen.. :mrgreen:
Bild + Bild

Bild
Antworten