Что нового

событие в input вызывается при смене фокуса. Как избежать этого ?

mitiya

Новичок
Сообщения
75
Репутация
0
есть конструкция вида:
Код:
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $i_search
                        _search()
        EndSwitch
Wend

ввожу что в поле input , нажимаю enter срабатывает _search(), все хорошо.
Но проблема в том, что если я что-то введу,а потом к примеру переключу вкладку,или нажму чекбокс, тут же отрабатывается событие $i_search.
Это очень неудобно, функция там долгая и тд.
Как этого избежать, как сделать чтоб только по enter это происходило?
 
A

Alofa

Гость
Код:
#include <GUIConstantsEx.au3>

$hGui = GUICreate('', 150, 100)
$iInput = GUICtrlCreateInput('', 10, 10, 130, 20)
$hInput = GUICtrlGetHandle(-1)
GUICtrlCreateButton('Кнопка', 25, 50, 100)
GUISetState()
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit	
		Case $iInput
			If ControlGetHandle($hGui, '', '') = $hInput Then MsgBox(262144, Default, '_search() сработает если $iInput находится в фокусе.')
		Case Else
	EndSwitch
WEnd


Или же регистрируйте свой обработчик. Чтитайте GUIRegisterMsg() и WM_COMMAND.
 
Верх