mark2004 Posted January 1, 2007 Posted January 1, 2007 Anyone know how to make an Edit control generate an event when "Return" is pressed??
GaryFrost Posted January 1, 2007 Posted January 1, 2007 (edited) expandcollapse popup#include <GuiConstants.au3> Global Const $WM_COMMAND = 0x0111 Global Const $EN_CHANGE = 0x300 Global Const $EN_SETFOCUS = 0x100 Global Const $EN_KILLFOCUS = 0x200 Global Const $DebugIt = 1 Global $changed = 0 GUICreate("My GUI Edit") ; will create a dialog box that when displayed is centered $edit = GUICtrlCreateEdit("This is a test, this is only a test", 80, 50, 270, 170) ; create first item $btn = GUICtrlCreateButton("Ok", 40, 230, 60, 20) GUISetState() GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $changed = 1 ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Changed:" & GUICtrlRead($edit)) If $DebugIt Then _DebugPrint(StringLen(GUICtrlRead($edit))) ;---------------------------------------------------------------------------------------------- $changed = 0 EndSelect WEnd Func _Edit_Changed() $changed = 1 Local $s_temp = GUICtrlRead($edit) If StringMid($s_temp, StringLen($s_temp) - 1, 2) = @CRLF Then _DebugPrint("Edit Changed: Return Pressed") EndFunc ;==>_Edit_Changed Func _Edit_GotFocus() ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Got Focus") ;---------------------------------------------------------------------------------------------- EndFunc ;==>_Edit_GotFocus Func _Edit_LostFocus() ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Lost Focus") ;---------------------------------------------------------------------------------------------- EndFunc ;==>_Edit_LostFocus Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local $hCtrl = $lParam Switch $nID Case $edit Switch $nNotifyCode Case $EN_CHANGE _Edit_Changed() Case $EN_SETFOCUS _Edit_GotFocus() Case $EN_KILLFOCUS _Edit_LostFocus() EndSwitch EndSwitch ; Proceed the default Autoit3 internal message commands. ; You also can complete let the line out. ; !!! But only 'Return' (without any value) will not proceed ; the default Autoit3-message in the future !!! Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_COMMAND Func _DebugPrint($s_text) $s_text = StringReplace($s_text, @LF, @LF & "-->") ConsoleWrite("!===========================================================" & @LF & _ "+===========================================================" & @LF & _ "-->" & $s_text & @LF & _ "+===========================================================" & @LF) EndFunc ;==>_DebugPrint Edited January 1, 2007 by gafrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
mark2004 Posted January 1, 2007 Author Posted January 1, 2007 Ahhhh yes, good old $GUI_RegisterMsg.... Thanks! That's exactly what I was looking for. expandcollapse popup#include <GuiConstants.au3> Global Const $WM_COMMAND = 0x0111 Global Const $EN_CHANGE = 0x300 Global Const $EN_SETFOCUS = 0x100 Global Const $EN_KILLFOCUS = 0x200 Global Const $DebugIt = 1 Global $changed = 0 GUICreate("My GUI Edit") ; will create a dialog box that when displayed is centered $edit = GUICtrlCreateEdit("This is a test, this is only a test", 80, 50, 270, 170) ; create first item $btn = GUICtrlCreateButton("Ok", 40, 230, 60, 20) GUISetState() GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $changed = 1 ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Changed:" & GUICtrlRead($edit)) If $DebugIt Then _DebugPrint(StringLen(GUICtrlRead($edit))) ;---------------------------------------------------------------------------------------------- $changed = 0 EndSelect WEnd Func _Edit_Changed() $changed = 1 Local $s_temp = GUICtrlRead($edit) If StringMid($s_temp, StringLen($s_temp) - 1, 2) = @CRLF Then _DebugPrint("Edit Changed: Return Pressed") EndFunc ;==>_Edit_Changed Func _Edit_GotFocus() ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Got Focus") ;---------------------------------------------------------------------------------------------- EndFunc ;==>_Edit_GotFocus Func _Edit_LostFocus() ;---------------------------------------------------------------------------------------------- If $DebugIt Then _DebugPrint("Edit Lost Focus") ;---------------------------------------------------------------------------------------------- EndFunc ;==>_Edit_LostFocus Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local $hCtrl = $lParam Switch $nID Case $edit Switch $nNotifyCode Case $EN_CHANGE _Edit_Changed() Case $EN_SETFOCUS _Edit_GotFocus() Case $EN_KILLFOCUS _Edit_LostFocus() EndSwitch EndSwitch ; Proceed the default Autoit3 internal message commands. ; You also can complete let the line out. ; !!! But only 'Return' (without any value) will not proceed ; the default Autoit3-message in the future !!! Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_COMMAND Func _DebugPrint($s_text) $s_text = StringReplace($s_text, @LF, @LF & "-->") ConsoleWrite("!===========================================================" & @LF & _ "+===========================================================" & @LF & _ "-->" & $s_text & @LF & _ "+===========================================================" & @LF) EndFunc ;==>_DebugPrint
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now