Seite 1 von 1
MenuItem von SubMenu-Beginn unterscheiden
Verfasst: 09.02.2010 22:00
von iostream
Wie kann ich bei folgendem Code das erste Item von dem SubMenu-Beginn unterscheiden, wenn beide anscheinend die gleiche ID haben?
Code: Alles auswählen
Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
If uMsg = #WM_MENUSELECT
Debug wParam & $FF
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")
OpenSubMenu("SubMenu-Begin")
CloseSubMenu()
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: MenuItem von SubMenu-Beginn unterscheiden
Verfasst: 09.02.2010 22:46
von Fluid Byte
Steht eigentlich alles bei den Infos für #WM_MENUSELECT auf MSDN aber egal ...
Code: Alles auswählen
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
If uMsg = #WM_MENUSELECT
If wParam >> 16 & #MF_POPUP
Debug Str(wParam & $FF) + " (SUBMENU)"
Else
Debug wParam & $FF
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0, 0, 0, 400, 250, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WindowCallback())
CreateMenu(0, WindowID(0))
MenuTitle("Title")
MenuItem(1, "Item1")
MenuItem(2, "Item2")
MenuItem(3, "Item3")
OpenSubMenu("SubMenu-Begin")
CloseSubMenu()
While WaitWindowEvent() ! 16 : Wend
Re: MenuItem von SubMenu-Beginn unterscheiden
Verfasst: 09.02.2010 23:15
von hjbremer
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
Re: MenuItem von SubMenu-Beginn unterscheiden
Verfasst: 10.02.2010 00:08
von iostream
Danke an euch beide...werde msdn doch genauer lesen müssen ^^