[已解决]如何让鼠标点击GUICtrlCreateInput时内置的信息自动消失?
本帖最后由 smooth 于 2015-2-25 15:35 编辑如何让鼠标点击GUICtrlCreateInput时内置的信息自动消失?而当鼠标离开后若没有输入任何内容时,又恢复默认的信息?谢谢! 回复 1# smooth #include <WindowsConstants.au3>
#include <EditConstants.au3>
Local $sDefault = "默认值"
GUICreate('TEST', 420, 200)
$Input = GUICtrlCreateInput($sDefault, 10, 15, 400, 23)
$Edit =GUICtrlCreateEdit('', 10, 50, 400, 140)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
Do
Until GUIGetMsg() == -3
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $nCode = BitShift($wParam, 16)
Local $ID = BitAND($wParam, 0x0000FFFF)
If $ID <>$Input Then Return
If $nCode = $EN_KILLFOCUS Then
If GUICtrlRead($Input) == '' Then GUICtrlSetData($Input, $sDefault)
ElseIf $nCode = $EN_SETFOCUS Then
GUICtrlSetData($Input, '')
EndIf
EndFunc 回复 2# user3000
谢谢,又学习了。但感觉把排列对换一下会好一点,不知是什么原因?
$Input = GUICtrlCreateInput($sDefault, 10, 15, 400, 23)
$Edit =GUICtrlCreateEdit('', 10, 50, 400, 140)
$Edit =GUICtrlCreateEdit('', 10, 50, 400, 140)
$Input = GUICtrlCreateInput($sDefault, 10, 15, 400, 23) 回复 2# user3000
能否在事件模式下实现? 回复 4# vigiles
这问题可以自己尝试下,比发问更有体会. 回复 2# user3000
为什么要建立两个控件 回复 6# netegg
老大,没什么特殊缘由.随手改的代码;这样又方便转移输入焦点. 回复 2# user3000
这样有点问题,弹出界面后,当鼠标一开始就点击这个GUICtrlCreateInput时,默认的信息无法自动消失。只有当鼠标点到别的地方,然后再点GUICtrlCreateInput时,才有那样的效果。 回复 8# smooth
应该就是3楼说的重新排列一下会"更好"的原因了,像那样先创建EDIT控件,输入焦点就会在其上.
也可以创建完控件后再设置输入焦点:;#include <GUIConstantsEx.au3>
;.............
;GUICtrlSetState($Edit, $gui_focus)
页:
[1]