Seite 1 von 2
PopUp-Menu bei Systray
Verfasst: 14.08.2006 21:52
von Mok
Ganz kurz meine Frage: (Hab nämlich keine Zeit)
Wie kann ich das machen, wenn man rechtsklickt auf ein Systray-Symbol, dass sich dann ein PopUp-Menü öffnet

Re: PopUp-Menu bei Systray
Verfasst: 14.08.2006 22:35
von Kiffi
Mok hat geschrieben:Ganz kurz meine Frage: (Hab nämlich keine Zeit)
ganz kurze Antwort (Ich habe nämlich auch keine Zeit): DisplayPopupMenu()
Grüße ... Kiffi
Verfasst: 15.08.2006 17:00
von Mok
Aber... (Ich hab jetz´ Zeit) DisplayPopupMenu() get doch nur bei Fnstern... oder?
Verfasst: 15.08.2006 17:16
von #NULL
systray-icons doch auch, oder ?
Verfasst: 15.08.2006 19:26
von Kiffi
Mok hat geschrieben:DisplayPopupMenu() get doch nur bei Fnstern... oder?
jepp, wieso? Habe ich in Deiner Ursprungsfrage ein nicht existentes "aber
ohne Fenster" überlesen?
Grüße ... Kiffi
Verfasst: 15.08.2006 20:52
von a14xerus
ich hide mein fenster und zeige stattdessen das systray.. dieses muss sowieso immer auf ein fenster bezogen sein.. weil da ja auch die menuitems reingeschrieben werden..
natürlich kannst du das icon auch die ganze zeit anzeigen
Such doch einfach mal in der hilfe nach popupup.. ich habe mir die ganze systray sache auch selber beigebracht
Verfasst: 15.08.2006 20:54
von ts-soft
a14xerus hat geschrieben:ich hide mein fenster udn zeieg stattdessen das systray.. dieses muss sowieso immer auf ein fenster bezogen sein.. weil da aj cu hdie menuitems reingeschreiben werden..
natürlich kannst du das icon auch die ganze zeit anzeigfen
Such doc heinfach mal in der hilfe nach popupup.. ich habe mir die ganze systray sache auc hseler beigebracht
Wäre nett, wenn Du Deine Beiträge in deutsch verfassen würdest

Verfasst: 19.08.2006 12:28
von JohnMC
Also des geht so:
du öffnest ein fenster und machst danach ein
jetzt machst du ein systraysymbol mit
dann machst du mit createpopupmenu() ein popupmenu auf die windowID des vorher gamacht fensters.
du fragst in einer schlaufe ganz normal ab, ob das systrayicon angeklickt wurde ( if windowevent()=#pb_event_systray). dann machst du openpopupmenu() auf das gehidete fenster und dann fragst du ab, welches menu geklickt wurde.....[/code]
Verfasst: 19.08.2006 13:24
von Jilocasin
JohnMC hat geschrieben:
du öffnest ein fenster und machst danach ein
boar wie umständlich
öffne es doch gleich mit #PB_Window_Invisible ^^
Verfasst: 19.08.2006 17:55
von mk-soft
Info:
Windows benötigt ein Menuhandle um dort das Systray einbinden zu können und die Menu Events an das Programm weiterleiten zu können.
Ohne Fenster gibt es aber kein Menuhandle.
In etwa war das so.
FF
EDIT: Hatte langeweile...
Code: Alles auswählen
Enumeration
#Menu_New
#Menu_Open
#Menu_Save
#Menu_Exit
EndEnumeration
;- Main
If OpenWindow(0, 0, 0, 640, 480, "Systray Test")
HideWindow(0, 1)
;- Popup Menu anlegen
CreatePopupMenu(0)
MenuItem(#Menu_New, "&Neu")
MenuItem(#Menu_Open, "Ö&ffnen")
MenuItem(#Menu_Save, "&Speichern")
MenuBar()
MenuItem(#Menu_Exit, "Be&enden")
;- Systray anlegen aus Programm Icon
hInst.l = GetWindowLong_(WindowID(0), #GWL_HINSTANCE)
hIcon.l = LoadIcon_(hInst, 1)
If hIcon = 0
hIcon = LoadIcon_(0, #IDI_APPLICATION)
EndIf
AddSysTrayIcon(0, WindowID(0), hIcon)
Exit = 0
;- Hauptschleife
Repeat
event = WaitWindowEvent()
menu = EventMenu()
type = EventType()
Select event
Case #PB_Event_Menu ; ein Menü wurde ausgewählt
Select menu
Case #Menu_Exit
Exit = 1
EndSelect
Case #PB_Event_Gadget ; ein Gadget wurde gedrückt
Case #PB_Event_CloseWindow ; das Schließgadget vom Fenster wurde gedrückt
Exit = 1
Case #PB_Event_Repaint ; der Fensterinhalt wurde zerstört und muss neu gezeichnet werden (nützlich für 2D Grafik-Operationen)
Case #PB_Event_SizeWindow ; das Fenster wurde in der Größe verändert
Case #PB_Event_MoveWindow ; das Fenster wurde verschoben
Case #PB_Event_ActivateWindow ; das Fenster wurde aktiviert (hat den Fokus erhalten)
Case #PB_Event_SysTray ; das SysTray wurde aktiviert
Select type
Case #PB_EventType_LeftClick ; Klick mit der linken Maustaste
DisplayPopupMenu(0, WindowID(0))
Case #PB_EventType_RightClick ; Klick mit der rechten Maustaste
DisplayPopupMenu(0, WindowID(0))
EndSelect
EndSelect
Until Exit
EndIf