【已解决】判断下一个焦点
本帖最后由 ybbihsse 于 2011-1-1 12:01 编辑我按了回车键或者TAB键,如何判断接下去的焦点会转到哪个控件上
A B C D 四个输入框,
焦点在A框上,
按下TAB键或者回车键,
如果下一个焦点会在C上,则执行C段代码
如果下一个焦点在D上,则执行D段代码
------------------------------------------------------------------------
详见6楼 由控件的ID确定的,同一个组内按递增的方式排序 由控件的ID确定的,同一个组内按递增的方式排序
ceoguang 发表于 2010-12-31 15:25 http://www.autoitx.com/images/common/back.gif
因为有设置 了条件,A B C D四个控件,当满足条件会禁用其中的一两个控件 那就取控件状态,如果禁用则跳过不就行了 我是想实现,ABC D四个输入框,一个E确定按钮
在ABCD输入框按回车的时候可以直接跳到下一个控件,也就是把ENTER变成TAB键
而到E确定键的时候,将取消这个热键,按回车能直接确定,而不是也跟着一起转到下一个控件 本帖最后由 水木子 于 2011-1-1 11:34 编辑
#include <WinAPI.au3>
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUICreate("Form1", 400, 300)
$Inputa = GUICtrlCreateInput("A", 50, 50, 100, 21)
$Inputb = GUICtrlCreateInput("B", 50, 100, 100, 21)
$Inputc = GUICtrlCreateInput("C", 50, 150, 100, 21)
$Inputd = GUICtrlCreateInput("D", 50, 200, 100, 21)
$Button1 = GUICtrlCreateButton("E", 250, 100, 100, 30)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
MsgBox(0, '', '相应回车键')
EndSwitch
WEnd
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit
$nID = BitAND($iwParam, 0x0000FFFF)
;$iIDFrom = _WinAPI_LoWord($iwParam)
$iCode = _WinAPI_HiWord($iwParam)
Switch $iCode
Case $EN_SETFOCUS
Switch $nID
Case $Inputa
MsgBox(0, '', 'A')
Case $Inputb
MsgBox(0, '', 'B')
Case $Inputc
MsgBox(0, '', 'C')
Case $Inputd
MsgBox(0, '', 'D')
EndSwitch
EndSwitch
EndFunc ;==>WM_COMMAND
水木子 发表于 2011-1-1 11:15 http://www.autoitx.com/images/common/back.gif
水木大哥,你太厉害了,解决了。但不太明白你这代码的意思哦。呵呵。看样子我太菜菜菜了!!!
页:
[1]