Что нового

Как при двойном клике по Input его очистить

pvnn

Осваивающий
Сообщения
305
Репутация
32
Доброго времени суток. Собственно вопрос в самой теме.
Как отловить событие двойной клик по Input?
И где можно посмотреть все события Input, нашел только $EN_CHANGE, $EN_SETFOCUS, $EN_KILLFOCUS

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 321, 92, 192, 114)
$hInput = GUICtrlCreateInput("Input1", 8, 16, 273, 21)

GUIRegisterMsg( $WM_COMMAND, "WM_COMMAND" )
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg
    Local $iCode = BitShift($wParam, 16)
    Switch $lParam
        Case GUICtrlGetHandle($hInput)
            Switch $iCode
				Case $EN_CHANGE
					ConsoleWrite(GUICtrlRead($hInput)&@CRLF)
				Case $EN_SETFOCUS
				Case $EN_KILLFOCUS
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc  ;==>ED_WM_COMMAND
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
pvnn [?]
отловить событие двойной клик по Input
Input (он же Edit) обрабатывает пользовательский ввод самостоятельно и "забирает" все сообщения от мыши и клавиатуры себе. Поэтому отлавливать эти события довольно проблематично. Но если вам очень хочется, то можете попробовать следующие варианты:
1. Использовать так называемый сабклассинг элемента с использованием _WinAPI_SetWindowSubclass
2. Переопределить оконную процедуру через _WinAPI_SetWindowLong с параметром $GWL_WNDPROC
В обоих случаях отлавливать $WM_LBUTTONDBLCLK.
 
Автор
P

pvnn

Осваивающий
Сообщения
305
Репутация
32
Alofa спасибо за ссылку, вполне рабочий вариант.

Хотя интересно было бы реализовать предложенное InnI
1. Использовать так называемый сабклассинг элемента с использованием _WinAPI_SetWindowSubclass
2. Переопределить оконную процедуру через _WinAPI_SetWindowLong с параметром $GWL_WNDPROC

... для меня это китайская грамота. InnI может поделитесь кодом...
 
Верх