Jump to content

Temporarily Disable contextmenu


SoulA
 Share

Recommended Posts

I am trying to just temporarily disable the context menu and then re-enable it whenever I choose. I figured this would be a simple task using GUICtrlSetState() but that apparently does not affect context menus.

The only solution I can currently think of is to delete the context menu and then recreate it when I need it again but that is real hassle.

Link to comment
Share on other sites

I am trying to just temporarily disable the context menu and then re-enable it whenever I choose. I figured this would be a simple task using GUICtrlSetState() but that apparently does not affect context menus.

The only solution I can currently think of is to delete the context menu and then recreate it when I need it again but that is real hassle.

SoulA

modified helpfile example without any checking for menu handles.

use the GuiMenu.au3 UDF to make menus

you can check for the handles of using wparam in _WM_CONTEXTMENU().

see helpfile GuiMenu UDF section example for _GUICtrlMenu_CreatePopup ()

Edit: added comment on helpfile example

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Local $contextmenu, $button, $buttoncontext, $buttonitem, $msg, $iFlag = 0
Local $newsubmenu, $textitem, $fileitem, $saveitem, $infoitem

;right click on gui to bring up context Menu.
;right click on the "ok" button to bring up a control specific context menu.

;click on the "ok" button to disable contextmenus

GUICreate("My GUI Context Menu", 300, 200)
$button = GUICtrlCreateButton("Context Menu Enabled", 75, 100, 150, 20)

$buttoncontext = GUICtrlCreateContextMenu($button)
$buttonitem = GUICtrlCreateMenuItem("About button", $buttoncontext)

$contextmenu = GUICtrlCreateContextMenu()
$newsubmenu = GUICtrlCreateMenu("new", $contextmenu)
$textitem = GUICtrlCreateMenuItem("text", $newsubmenu)
$fileitem = GUICtrlCreateMenuItem("Open", $contextmenu)
$saveitem = GUICtrlCreateMenuItem("Save", $contextmenu)
GUICtrlCreateMenuItem("", $contextmenu)     ; separator
$infoitem = GUICtrlCreateMenuItem("Info", $contextmenu)

GUIRegisterMsg($WM_CONTEXTMENU, "_WM_CONTEXTMENU")
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $button
            $iFlag = Not $iFlag
            If $iFlag Then 
                GUICtrlSetData($button, "Context Menu Disabled")
            Else
                GUICtrlSetData($button, "Context Menu Enabled")
            EndIf
        Case $GUI_EVENT_CLOSE
            GUIDelete()
            Exit
    EndSwitch
WEnd

Func _WM_CONTEXTMENU($hwnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    If $iFlag Then Return 0
    Return $GUI_RUNDEFMSG
EndFunc
Edited by rover

I see fascists...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...