Описание функции


WM_MENUSELECT

Сообщение выполняется при выборе главного или контекстного меню и его пунктов.

Параметры

Указанные параметры передаются системой.
wParam Двойное слово содержит:
    младшее слово = идентификатор элемента
    старшее слово = состояние пункта, может быть комбинацией следующих значений
        MF_BITMAP - пункт отображает bitmap.
        MF_CHECKED - пункт отмечен галочкой или кружком.
        MF_DISABLED - пункт недоступный.
        MF_GRAYED - пункт серого цвета, недоступный.
        MF_HILITE - пункт выделен.
        MF_MOUSESELECT - пункт выбран наведением мыши.
        MF_OWNERDRAW - пункт нарисованный пользователем.
        MF_POPUP - пункт разворачивает вложенное меню.
        MF_SYSMENU - пункт содержится в системном меню, которое вызывается на иконке заголовка или на кнопке на панели задач.
lParam Дескриптор выбранного меню

Примечания

Смотрите функцию SetWindowCallback.

См. также

WM_ENTERMENULOOP, WM_EXITMENULOOP

Пример

EnableExplicit

#Window = 0
#Menu = 0

Global k = 0
Global hCUI

Procedure WinCallback(hWnd, Msg, wParam, lParam)
    Protected info$, ID, Flags
    ID = wParam & $FFF ; LoWord
    Flags = wParam >> 16 ; HiWord
         If Msg = #WM_MENUSELECT
        k + 1
        SetWindowTitle(#Window, "Call " + k)
        If Flags & #MF_CHECKED
            info$ + "MF_CHECKED" + #CRLF$
        EndIf
        If Flags & #MF_DISABLED
            info$ + "MF_DISABLED" + #CRLF$
        EndIf
        If Flags & #MF_GRAYED
            info$ + "MF_GRAYED" + #CRLF$
        EndIf
        If Flags & #MF_HILITE
            info$ + "MF_HILITE" + #CRLF$
        EndIf
        If Flags & #MF_MOUSESELECT
            info$ + "MF_MOUSESELECT" + #CRLF$
        EndIf
        If Flags & #MF_OWNERDRAW
            info$ + "MF_OWNERDRAW" + #CRLF$
        EndIf
        If Flags & #MF_POPUP
            info$ + "MF_POPUP" + #CRLF$
        EndIf
        If Flags & #MF_SYSMENU
            info$ + "MF_SYSMENU" + #CRLF$
        EndIf
                 SetGadgetText(1, "handle = " + lParam + #CRLF$ +          "ID = " + ID + #CRLF$ +          "Flags:" + Flags + #CRLF$ +          info$)
             EndIf
         ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

hCUI = OpenWindow(#Window, 5, 5, 590, 270, "WM_MENUSELECT")
If hCUI
    TextGadget(0, 10, 5, 300, 94, "The WM_MENUSELECT function is triggered when the main or context menu and its items are selected.")
    TextGadget(1, 400, 5, 185, 264, "")
              If CreateMenu(#Menu, WindowID(#Window))
        MenuTitle("+File")
        MenuItem(1, "Open")
        MenuItem(2, "Save")
        MenuItem(3, "Save as")
        MenuBar()
        OpenSubMenu("Options")
        MenuItem(9, "Window...")
        MenuItem(10, "Gadget...")
        CloseSubMenu()
        MenuItem(4, "Close")
        MenuTitle("Help")
        MenuItem(5, "Web")
        MenuItem(6, "Support")
        SetMenuItemState(#Menu , 1 , #True)
        DisableMenuItem(#Menu , 2 , #True)
    EndIf
         SetWindowCallback(@WinCallback())
         Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf