#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $hGUI, $idEdit, $idBtn, $idDummy, $iCountLines
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
$hGUI = GUICreate('Edit', 200, 200)
$idEdit = GUICtrlCreateEdit('', 20, 20, 160, 100)
$idBtn = GUICtrlCreateButton('Test', 50, 145, 100, 30)
$idDummy = GUICtrlCreateDummy()
GUISetState()
$iCountLines = GUICtrlSendMsg($idEdit, $EM_GETLINECOUNT, 0, 0)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idBtn
MsgBox(64, 'Info', 'Btn click', 0, $hGUI)
Case $idDummy
MsgBox(64, 'Info', 'You send Enter in Edit', 0, $hGUI)
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch BitAND($iwParam, 0xFFFF)
Case $idEdit
Switch BitShift($iwParam, 16)
Case $EN_CHANGE
Local $i_Count = GUICtrlSendMsg($idEdit, $EM_GETLINECOUNT, 0, 0)
Select
Case $i_Count > $iCountLines
$iCountLines = $i_Count
GUICtrlSendToDummy($idDummy)
Case $i_Count < $iCountLines
$iCountLines = $i_Count
EndSelect
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
А так?Но такая-же тема не проходит с GUICtrlCreateInput
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $hGUI, $idInput, $idBtn, $idDummy, $iFocusInput, $aAccelKeys[1][2] = [['{Enter}']]
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
$hGUI = GUICreate('Input', 200, 200)
$idInput = GUICtrlCreateInput('', 20, 20, 160, 100)
$idBtn = GUICtrlCreateButton('Test', 50, 140, 100, 30)
$idDummy = GUICtrlCreateDummy()
$aAccelKeys[0][1] = $idDummy
GUISetAccelerators($aAccelKeys)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idBtn
MsgBox(64, 'Info', 'Btn', 0, $hGUI)
Case $idDummy
If Not $iFocusInput Then ContinueLoop
MsgBox(64, 'Info', 'You send Enter in Input', 0, $hGUI)
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch BitAND($iwParam, 0xFFFF)
Case $idInput
Switch BitShift($iwParam, 16)
Case $EN_SETFOCUS
$iFocusInput = 1
Case $EN_KILLFOCUS
$iFocusInput = 0
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
а как так может быть если WM_COMMAND отслеживает толькоНо такая-же тема не проходит с GUICtrlCreateInput.
Case $idEdit
а вот как поступить в случае с тремя InputBox ?
[info border=#0000ff float=left]С такой постановкой вопроса Вам надо в Стол заказов.как поступить в случае с тремя InputBox
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $hGUI, $a_idInput[4], $idBtn, $idDummy, $aAccelKeys[1][2] = [['{Enter}']]
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
$hGUI = GUICreate('InputData', 400, 260)
For $i = 1 To 3
$a_idInput[$i] = GUICtrlCreateInput($i & '_String', 100, 120 + ($i - 1) * 30, 260, 30)
Next
$idBtn = GUICtrlCreateButton('Test', 40, 230, 60, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
$idDummy = GUICtrlCreateDummy()
$aAccelKeys[0][1] = $idDummy
GUISetAccelerators($aAccelKeys)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idBtn
MsgBox(64, 'Info', 'Btn', 0, $hGUI)
Case $idDummy
If Not $a_idInput[0] Then ContinueLoop
MsgBox(64, 'Info', 'You send Enter in Input with ID = ' & $a_idInput[0] & @LF & 'and with text = "' & _
GUICtrlRead($a_idInput[0]) & '"', 0, $hGUI)
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch BitShift($iwParam, 16)
Case $EN_KILLFOCUS
$a_idInput[0] = 0
Case $EN_SETFOCUS
Local $i_ID = BitAND($iwParam, 0xFFFF)
For $i = 1 To 3
If $i_ID = $a_idInput[$i] Then
$a_idInput[0] = $i_ID
ExitLoop
EndIf
Next
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
Global $hGUI, $a_hInput[3], $idBtn, $idDummy, $aAccelKeys[1][2] = [['{Enter}']], $hFocus
$hGUI = GUICreate('InputData', 400, 260)
For $i = 0 To 2
GUICtrlCreateInput($i + 1 & '_String', 100, 120 + $i * 30, 260, 30)
$a_hInput[$i] = GUICtrlGetHandle(-1)
Next
$idBtn = GUICtrlCreateButton('Test', 40, 230, 60, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
$idDummy = GUICtrlCreateDummy()
$aAccelKeys[0][1] = $idDummy
GUISetAccelerators($aAccelKeys)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idBtn
MsgBox(64, 'Info', 'Btn', 0, $hGUI)
Case $idDummy
$hFocus = _WinAPI_GetFocus()
For $hTmp In $a_hInput
If $hTmp = $hFocus Then
;~ ConsoleWrite(GUICtrlRead(_WinAPI_GetDlgCtrlID($hFocus)) & @LF)
MsgBox(64, 'Info', 'You send Enter in Input with Handle = ' & $hFocus & ', ID = ' & _WinAPI_GetDlgCtrlID($hFocus) & @LF & _
'and with text = "' & _WinAPI_GetWindowText($hFocus) & '"', 0, $hGUI)
ExitLoop
EndIf
Next
EndSwitch
WEnd