回复 5# ator916
如下所示,希望你能学到点什么
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SendMessage.au3>
Opt("GUIOnEventMode", 1) ;使用事件驱动模式
$Form = GUICreate("Enter 焦点切换例子", 285, 72, 192, 114) ;创建窗体
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 249, 21) ;创建第一个输入框
$Input2 = GUICtrlCreateInput("Input2", 8, 40, 249, 21) ;创建第二个输入框
$Button = GUICtrlCreateButton("",-100,-100,1,1) ;创建一个隐藏的 按钮
Dim $Form_AccelTable[2][2] = [["{ENTER}", $Button],["{TAB}", $Button]] ;设置快捷键 enter tab 设置tab 的作用是为了阻止tab切换到 按钮控件上去
GUISetAccelerators($Form_AccelTable) ;设置窗口的快捷键表
GUISetOnEvent($GUI_EVENT_CLOSE, "FormClose") ;注册窗口关闭事件函数
GUICtrlSetOnEvent($Button, "ButtonClick") ;注册按钮事件函数
GUISetState(@SW_SHOW) ;显示窗体
While 1
Sleep(100)
WEnd
Func FormClose() ;窗体关闭操作
Exit
EndFunc
Func ButtonClick() ;按钮事件函数
;获取当前激活的控件句柄
Local $nowFocusInputHandle=ControlGetHandle($Form,"",ControlGetFocus($Form))
;获取 Input1 的句柄
Local $Input1Handle=ControlGetHandle($Form,"",$Input1)
;获取 Input2 的句柄
Local $Input2Handle=ControlGetHandle($Form,"",$Input2)
;如果 当前激活的是 input1 则将焦点设置为 input2 并选中input2中的所有内容
If $nowFocusInputHandle=$Input1Handle Then
ControlFocus($Form,"",$Input2)
_SendMessage($Input2Handle, $EM_SETSEL, 0, StringLen(GUICtrlRead($Input2)))
;如果 当前激活的是 input2 则将焦点设置为 input1 并选中input1中的所有内容
ElseIf $nowFocusInputHandle=$Input2Handle Then
ControlFocus($Form,"",$Input1)
_SendMessage($Input1Handle, $EM_SETSEL, 0, StringLen(GUICtrlRead($Input1)))
EndIf
EndFunc
|