er war schneller
trotzdem hier meine Idee, im Prinzip das Gleiche
Code: Alles auswählen
Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
If uMsg = #WM_MENUSELECT
Debug wParam & $FF
If (wParam >> 16) & $FF - 128 = #MF_POPUP
Debug "ich habe ein SubMenu"
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 400, 250, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WindowCallback())
If CreateMenu(0, WindowID(0))
MenuTitle("Title")
MenuItem(1, "Item")
MenuItem(2, "Item")
OpenSubMenu("SubMenu-Begin")
MenuItem(3, "Item")
CloseSubMenu()
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Ansonsten, solltest du nur ein Submenu sperren wollen, so gibt es GetSubMenu_(MenuID(nr), x)
Code: Alles auswählen
If OpenWindow(0, 0, 0, 400, 250, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateMenu(0, WindowID(0))
MenuTitle("Title")
MenuItem(1, "Item")
MenuItem(2, "Item")
OpenSubMenu("SubMenu-Begin")
MenuItem(3, "Item")
CloseSubMenu()
MenuTitle("xyz")
MenuItem(11, "Item")
OpenSubMenu("SubMenu-Begin")
MenuItem(13, "Item")
CloseSubMenu()
EndIf
EnableMenuItem_(GetSubMenu_(MenuID(0), 0), 2, #MF_BYPOSITION | #MF_GRAYED)
EnableMenuItem_(GetSubMenu_(MenuID(0), 1), 1, #MF_BYPOSITION | #MF_GRAYED)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf