Danke für die Mühe! Der Ansatz hilft aber nicht, da ich ja noch Parameter übergeben muss.
Zum vorherigen Post: kannste ja mal hier auf den Button und dann mal auf die Beenden-Schaltfläche klicken - nach dem Rechtsklick:
Code: Alles auswählen
EnableExplicit
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_INITMENUPOPUP
Debug "PopupMenu wurde geöffnet."
Case #WM_UNINITMENUPOPUP
If IsMenu(0)
FreeMenu(0)
EndIf
Debug "PopupMenu wurde geschlossen."
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure Popup()
If CreatePopupMenu(0)
MenuItem(1, "Hallo")
MenuItem(2, "Welt")
DisplayPopupMenu(0, WindowID(0))
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case 1
Debug "Hallo"
Case 2
Debug "Welt"
EndSelect
EndSelect
Until Not IsMenu(0)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(1, 100, 100, 100, 25, "Button")
SetWindowCallback(@WinCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_RightClick
Popup()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Debug "Das ist der Button gewesen!"
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
In meinem "richtigen" Code wird das Beenden, das Menü usw. im Bindevent verarbeitet. Das ist hier nicht die Frage.