Seite 1 von 1

Taskleiste

Verfasst: 02.08.2006 23:59
von C4rizz
Guten Abend.
Wollte mal fragen, wie ich ein Programm in die Taskleiste einspeise?
Es soll nach dem minimieren nur noch in der unteren rechten Ecke erscheinen.

Re: Taskleiste

Verfasst: 03.08.2006 00:08
von Kiffi
C4rizz hat geschrieben:Es soll nach dem minimieren nur noch in der unteren rechten Ecke erscheinen.
der Bereich in der rechten unteren Ecke[1] nennt sich Systray und PureBasic
bietet Dir 5 Befehle an, um Dein Programm (oder vielmehr das Icon dessen)
dort zu plazieren.

Schau Dir in der PB-Hilfe mal das Kapitel 'SysTray' an. Dort gibt es auch
einen schönen Beispielcode.

Grüße ... Kiffi

[1] Sofern die Taskleiste am unteren Bildschirmrand plaziert ist. ;-)

Verfasst: 03.08.2006 00:09
von ts-soft
Die zugehörige Lib heißt SysTray. Beispiel in der Hilfe testen und dann
weitere Fragen stellen!

Verfasst: 03.08.2006 00:15
von C4rizz
OK danke schon mal.
Werd ich mir mal durchlesen. :bluescreen:

Verfasst: 03.08.2006 11:37
von a14xerus
wenn du ein Systray hinzufügst, bleibt das fenster trotzdem noch erhalten.
aus der Taskleiste kannst du es verschwinden lasen indem du

Code: Alles auswählen

GetWindowState(#Window_0) = #PB_Window_Minimize
;und 
HideWindow(#Window_0,1)
verwendest.
bei einem doppelklick auf das systray kann man das fenster dann wieder zeigen

Verfasst: 03.08.2006 18:45
von C4rizz
Danke!
Genau das wollte ich wissen.
Hab mir die Hilfe dazu mal durchgelesen und habe daraus aber nicht erkennen können wie das geht.

Verfasst: 03.08.2006 18:53
von ts-soft
So in etwa könnte es in Deiner Ereignisschleife aussehen:

Code: Alles auswählen

Case #PB_Event_MoveWindow

  If GetWindowState(#Form_Main) = #PB_Window_Minimize
    If AddSysTrayIcon(#SysTrayIcon_Main, WindowID(#Form_Main), LoadIcon_(GetModuleHandle_(0), "APP"))
      HideWindow(#Form_Main, #True)
    EndIf
  Else
    WinState = GetWindowState(#Form_Main)
    If IsSysTrayIcon(#SysTrayIcon_Main)
      RemoveSysTrayIcon(#SysTrayIcon_Main)
    EndIf
  EndIf

Case #PB_Event_SysTray
  If Gadget = #SysTrayIcon_Main
    If EventType() = #PB_EventType_LeftClick
      RemoveSysTrayIcon(#SysTrayIcon_Main)
      SetWindowState(#Form_Main, WinState)
      HideWindow(#Form_Main, #False)
      SetForegroundWindow_(WindowID(#Form_Main))
    EndIf
  EndIf
WinState dient dazu, auch Normal und Maximiert-Ansicht korrekt wieder
herzustellen!