Что нового

[Элементы GUI] Удаление нативного контекстного меню из текстового поля

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Здравствуйте форумчане, из заголовка темы наверное в основном будет понятно но все же чуть подробнее:
Можно ли удалить нативное контекстное меню и текстового поля Edit?
Если да то как.
Я не много набросал код но у меня он возвращает false - не удачно
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIMenu.au3>
$gui = GUICreate("", 306, 210)
$Edit = GUICtrlCreateEdit("", 0, 0, 305, 209, _
			BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL,$es_multiline,$es_readonly))
GUISetState(@SW_SHOW)
ConsoleWrite( _GUICtrlMenu_DestroyMenu(_GUICtrlMenu_GetMenu(GUICtrlGetHandle($Edit)))&@LF)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

(Просто не хотелось бы пользоваться библиотекой GUIRichEdit)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
MnM
Набросал для примера:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; ---

Local $_hGui = GUICreate("", 300, 300), $_bFlag = True
Local $_iButton = GUICtrlCreateButton("Enabled", 75, 150, 150, 20)

Local $_iContext = GUICtrlCreateContextMenu($_iButton)
GUICtrlCreateMenuItem("Test", $_iContext)

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

While 1
    Switch GUIGetMsg()
        Case $_iButton
            $_bFlag = Not $_bFlag
            If $_bFlag Then
                GUICtrlSetData($_iButton, "Disabled")
            Else
                GUICtrlSetData($_iButton, "Enabled")
            EndIf
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func WM_CONTEXTMENU($hwnd, $iMsg, $wParam, $lParam)
    If $_bFlag Then Return 0
    Return $GUI_RUNDEFMSG
EndFunc
 
Автор
MnM

MnM

Post-Hardcore
Сообщения
679
Репутация
90
firex
Спасибо за ответ, но увы я так то же пытался минут 10 назад=) и с 0 для return и с 1, для элемента Edit сообщение $wm_contextmenu не отлавливаются :(
Код:
#include <WindowsConstants.au3>
Local $_hGui = GUICreate("", 300, 300), $_bFlag = True
Local $_iButton = GUICtrlCreateEdit("Enabled", 0, 0, 250, 250)
Local $_iContext = GUICtrlCreateContextMenu($_iButton)
GUICtrlCreateMenuItem("Test", $_iContext)
GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")
GUISetState()
While 1
    Switch GUIGetMsg()
        Case -3
            Exit
    EndSwitch
WEnd

Func WM_CONTEXTMENU($hwnd, $iMsg, $wParam, $lParam)
    ConsoleWrite("Вызов Context" & @LF)
    Return 'GUI_RUNDEFMSG'
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
MnM, вот пример подмены меню. Думаю, так же и удалить можно.
http://autoit-script.ru/index.php?topic=386.msg2573#msg2573
 
Автор
MnM

MnM

Post-Hardcore
Сообщения
679
Репутация
90
InnI
Да спасибо, именно такой эффект хотелось получить :smile:
 
Верх