qsy666888 发表于 2014-7-21 13:15:13

关于input输入显示问题?请教大大们(已解决)

本帖最后由 qsy666888 于 2018-3-7 10:10 编辑

我们通常使用模式:$Input1 = GUICtrlCreateInput("1111", 145, 58, 153, 23, $ES_PASSWORD)
现在我想的是:把 函数: $ES_PASSWORD 不放在里面,放在第二行(或者放设置的条件里面),如
       $Input1 = GUICtrlCreateInput("1111", 145, 58, 153, 23)
      xxxxxxxxx($Input1, $ES_PASSWORD)
请教大大们,该如何写,谢谢

xiehuahere 发表于 2014-7-21 14:40:58

回复 1# qsy666888

xxxxxxxxx 就是 GUICtrlSetStyle

qsy666888 发表于 2014-7-21 14:59:38

回复 2# xiehuahere
不对也,#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 350, 98, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 88, 32, 201, 21)
GUICtrlSetStyle(-1,$ES_PASSWORD)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

xiehuahere 发表于 2014-7-21 15:28:57

回复 3# qsy666888


Au3在GUICtrlSetStyle函数帮助里说明了:
有部分样式不能修改,请参考 MSDN 文档 documentation.

MSDN文档:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775464(v=vs.85).aspx
After the control has been created, these styles cannot be modified, except as noted.

不过我疑惑的是,用Edit控件直接这样也不行:Global $Edit1 = GUICtrlCreateEdit("", 88, 32, 201, 21, $ES_PASSWORD)

qsy666888 发表于 2014-7-21 15:41:16

不行,不能实现星号显示

qsy666888 发表于 2014-7-21 15:41:41

回复 4# xiehuahere

不行,不能实现星号显示

qsy666888 发表于 2014-7-21 18:15:06

难道大大们就没有一个人知道吗?

user3000 发表于 2014-7-21 20:04:49

Global Const $EM_SETPASSWORDCHAR = 0xCC

GUICreate("Test", 350, 98, 192, 124)
GUICtrlCreateInput("For Test Only!", 88, 32, 201, 21)
GUICtrlSendMsg(-1, $EM_SETPASSWORDCHAR, 42, 0)
; 星号"*" 的ASCII字符序号为 42
GUISetState()
While 1
       IfGUIGetMsg() = -3 Then ExitLoop
WEnd回复 7# qsy666888

qsy666888 发表于 2014-7-21 21:42:12

回复 8# user3000

大侠,能不能帮我看看,是怎么回事,我改去改来都没有改得好。Global $EM_SETPASSWORDCHAR = 0xCC
Global $a,$b,$c
Local $text_wenben= "请输入qq号码"
Global $Mark_1 = 0
Global $NONEAACTIVECOLOR    = 0x989898
$a = GUICreate("Test", 350, 98, 192, 124)
$c = GUICtrlCreateInput("", 88, 62, 201, 21)
$b = GUICtrlCreateInput($text_wenben, 88, 32, 201, 21)
GUICtrlSetColor(-1, $NONEAACTIVECOLOR)

GUISetState()
While 1
      _CheckInput($a, $b, "请输入qq号码", $text_wenben, $Mark_1)
          IfGUIGetMsg() = -3 Then ExitLoop
          
   WEnd
Func _CheckInput($hWnd, $ID, $InputDefText, ByRef $text_wenben, ByRef $Mark)
    If $Mark = 0 And _IsFocused($hWnd, $ID) And $text_wenben = $InputDefText Then
      $Mark = 1
      GUICtrlSetData($ID, "")
      GUICtrlSetColor($ID, 0x000000)
       $text_wenben = ""
           $d = GUICtrlRead($b)
          ;If $d <> "请输入qq号码" Then GUICtrlSendMsg($b, $EM_SETPASSWORDCHAR, 42, 0)
          ; 星号"*" 的ASCII字符序号为 42
    ElseIf $Mark = 1 And Not _IsFocused($hWnd, $ID) And $text_wenben = "" And GUICtrlRead($ID) = "" Then
      $Mark = 0
      $text_wenben = $InputDefText
      GUICtrlSetData($ID, $text_wenben)
      GUICtrlSetColor($ID, $NONEAACTIVECOLOR)
    EndIf
EndFunc

Func _IsFocused($hWnd, $nCID)
    Return ControlGetHandle($hWnd, '', $nCID) = ControlGetHandle($hWnd, '', ControlGetFocus($hWnd))
       
EndFunc

user3000 发表于 2014-7-21 22:04:43

回复 9# qsy666888

不能理解你代码的作用或意图!
所以,我对此表示无能为力!
两个INPUT控件是用来作什么?
一个用来显示提示文本?
另一个用来获取Q号和密码?
没必要这样弄吧, 可以简洁点!

qsy666888 发表于 2014-7-21 22:12:11

回复 10# user3000
我是做一个示例,
下面那个input是一个无用的控件,是为第一个input设立的(把鼠标指针移到第二个input上,这样才能显示出第一个input的效果),我就是看到qq登录有这样的效果

user3000 发表于 2014-7-21 22:24:15

回复 11# qsy666888
更糊涂了,QQ登录时不是有两个INPUT控件吧

qsy666888 发表于 2014-7-21 22:27:45

是的,我是想先把这个输入密码这个功能弄出来

qsy666888 发表于 2014-7-21 22:27:56

本帖最后由 qsy666888 于 2014-7-21 22:29 编辑

回复 12# user3000

是的,我是想先把这个输入密码这个效果弄出来(就是没有输入的时候显示输入密码字样,如果输入了密码,就是用星号显示)

qsy666888 发表于 2014-7-21 22:50:04

回复 12# user3000

能帮我改一下吗,大侠,谢谢
页: [1] 2
查看完整版本: 关于input输入显示问题?请教大大们(已解决)