Dies scheint bei folgendem Code aber nicht der Fall zu sein:
Code: Alles auswählen
Enumeration
#Window
#Menu
#PopupMenu
#MenuitemTest
#MenuItemQuit
EndEnumeration
Procedure TestHandler()
Debug "Test menu event"
EndProcedure
Procedure QuitHandler()
Debug "Quit menu event"
EndProcedure
OpenWindow(#Window, 100, 100, 300, 300, "Click test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreatePopupMenu(#PopupMenu)
MenuItem(#MenuitemTest, "Test")
;BindMenuEvent(#PopupMenu, #MenuitemTest, @TestHandler())
CreateMenu(#Menu, WindowID(#Window))
MenuTitle("File")
MenuItem(#MenuitemTest, "Test")
MenuItem(#MenuItemQuit, "Quit")
BindMenuEvent(#Menu, #MenuitemTest, @TestHandler())
BindMenuEvent(#Menu, #MenuItemQuit, @QuitHandler())
Repeat
Event = WaitWindowEvent()
If event = #PB_Event_RightClick
DisplayPopupMenu(#PopupMenu, WindowID(#Window))
EndIf
Until Event = #PB_Event_CloseWindow
Wenn man die kommentierte Zeile anwendet wird sogar die Procedure TestHandler bei beiden Menüeinträgen jeweils zweimal aufgerufen.
Scheinbar unterscheidet BindMenuEvent nicht zwischen den einzelnen Menüs sondern nur zwischen den Menüeinträgen.