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


WM_CONTEXTMENU

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

Параметры

Указанные параметры передаются системой.
wParam Дескриптор окна или элемента, на котором вызвано меню
lParam Двойное слово содержит:
    младшее слово = X-координата мыши относительно экрана
    старшее слово = Y-координата мыши относительно экрана

Примечания

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

См. также

WM_MENUSELECT, WM_ENTERMENULOOP, WM_EXITMENULOOP

Пример

EnableExplicit

#Window = 0

Enumeration
    #statist
    #btn
    #edt
EndEnumeration

Enumeration
    #Menu
    #PopupMenu
    #BtnMenu
EndEnumeration

Global hGUI, k

Procedure WinCallback(hWnd, Msg, wParam, lParam)
    Protected x, y
    x = lParam & $FFF ; LoWord
    y = lParam >> 16 ; HiWord
    Select Msg
        Case #WM_CONTEXTMENU
            k + 1
            SetWindowTitle(#Window, "Вызов " + k)
            SetGadgetText(#statist, "Дескриптор= " + wParam + " = " + GadgetID(#btn) + #LF$ + "x=" + x + #LF$ + "y=" + y)
            Select wParam
                Case GadgetID(#btn)
                    DisplayPopupMenu(#BtnMenu, WindowID(#Window))
                Case GadgetID(#edt)
                    DisplayPopupMenu(#PopupMenu, WindowID(#Window))
            EndSelect
    EndSelect
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


hGUI = OpenWindow(#Window, 0, 0, 370, 220, "Кликни правой кнопкой мыши", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If hGUI
    TextGadget(#statist, 5, 5, 360, 68, "Событие WM_CONTEXTMENU выполняется при вызове контекстного меню правой кнопкой мыши.")

    If CreateMenu(#Menu, WindowID(#Window))
        MenuTitle("File")
        MenuItem(1, "New")
    EndIf

    If CreatePopupMenu(#PopupMenu)
        MenuItem(2, "Текст1")
        MenuItem(3, "Текст2")
    EndIf

    If CreatePopupMenu(#BtnMenu)
        MenuItem(4, "О кнопке")
    EndIf

    ButtonGadget(#btn, 320, 150, 40, 35, "OK")
    EditorGadget(#edt, 10, 80, 300, 110)

;     BindEvent(#PB_Event_RightClick, @EventsPopupMenu())
    SetWindowCallback(@WinCallback())

    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf