McAu 发表于 2008-9-24 09:10:22

输入框如何自动获得焦点

请问各位高人,如何实现当以下事件发生时,输入框自动获得焦点:
1.窗口被激活;
2.点击窗口任意空白区域。

[ 本帖最后由 McAu 于 2008-9-25 00:18 编辑 ]

sanhen 发表于 2008-9-24 13:01:28


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("测试激活焦点", 300, 200)
$test=GUICtrlCreateInput ("", 10, 10)
$Input=GUICtrlCreateInput ("", 10, 30)
GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE")
GUISetState()
While 1
    $GUIMsg = GUIGetMsg()
    Switch $GUIMsg
      Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd

Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
    Local $iState = BitAnd($wParam, 0x0000FFFF)
    If $iState ThenGUICtrlSetState ($Input,$GUI_FOCUS)

EndFunc

McAu 发表于 2008-9-24 19:32:06

回复 1# McAu 的帖子

多谢居士 不过还有一点要请教:
点击其他控件(即使是 Label)后输入框仍然会失去焦点
有没有办法让输入框总是获得焦点 一直处于“待命”状态?
曾试过循环检测 结果不停设置焦点 根本没办法做其他操作...

sanhen 发表于 2008-9-24 19:40:33

点击了其他控件,理所当然的焦点是在点击的控件了的。

McAu 发表于 2008-9-24 19:50:15

那么有没有办法让输入框总是获得焦点 一直处于“待命”状态呢?

sanhen 发表于 2008-9-24 22:45:42

输入框永远焦点有什么意义呢?其他的操作根本操作不了。。。

输入框永远处理焦点有两种办法:

1、循环设置

2、事件模式。

我测试结果是,输入框永远处于焦点的话,其他的按钮根本操作不了。

McAu 发表于 2008-9-25 00:23:37

最开始也采用循环 结果不能做其他操作 所以才来论坛请教
想实现输入框永远焦点 只是为方便习惯键盘操作的用户 没有更大的实际意义
再次感谢居士兄

sanhen 发表于 2008-9-25 01:24:07

激活设置焦点就是最好的办法啦。不用客气。

zery 发表于 2010-4-7 12:15:37

没有意义的想法

navy 发表于 2012-10-31 11:04:54

2楼正解,正好需要焦点激活的代码

damoo 发表于 2014-4-8 21:27:20

学习一下,谢谢分享。
页: [1]
查看完整版本: 输入框如何自动获得焦点