⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m66.htm

📁 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程 vb教程
💻 HTM
字号:
<html>
<head>
<title>VB教程</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 
</head>
<p align="center"><script src="../../1.js"></script></a>

<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center> 
  <table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
    <tbody> 
     
    <tr> 
      <td bgcolor=#000000 height=9> 
        <div align=center class=H1>    <font color="#FFFFFF">如何在VB中制作不回显的文本框</font> </font> </font></div>
      </td>
    </tr>
    <tr valign=top> 
      <td class=H1 height=76> 
        <p align="left">  <br>
           </font></p>
        <p><br></p>
        <p align=left><font 
      size=3>  </font> <font color="#000000">在应用程序中,有时需要用户录入一些不宜在屏幕上直接显示的内容,如用户口令或机密数据。我们已熟知,在Foxbase/Foxpro中这一功能可以用SETCONSOLEOFF命令关闭向屏幕的回显来实现。那么,在VisualBasicforWin-dows中如何做到这一点呢?</font></span></p>
        <p>   一个容易想到的方法是利用文本框的Key-Press事件,但为了处理用户对文字的编辑(如删除、插入),则还要再用其它变量存放真正输入的内容,而且必须书写大量复杂的控制程序。实践证明,这种方法比较繁琐,不便使用。</font></span></p>
        <p>   笔者在用VB编程时发现,Windows文本框可以响应许多消息,那么,可不可以利用WindowsAPI函数sendmessage将控制特性的消息传递给文本框呢?如果可行,则可以将使目标以密码形式输出的消息传递给文本框,不就可以制作出不回显文字的文本框了吗?</font></span></p>
        <p>   答案是肯定的。笔者使用以上思路实现了这一功能。以下是程序中用到的几个API函数和有关的消息:</font></span></p>
        <p> <font color="#000000">getfocus():返回获得输入焦点的目标句柄;</font></span></p>
        <p> <font color="#000000">getwindowlong():取得指定目标的信息,第二个参数为GWL_STYLE时将返回目标的“风格”属性;</font></span></p>
        <p> <font color="#000000">setwindowlong():把新的属性值赋予指定的目标。该函数的三个参数分别为目标的句柄、属性类型、新属性值;</font></span></p>
        <p> <font color="#000000">sendmessage():向目标发送一条消息。该函数的四个参数分别为接收消息的目标句柄、消息、消息参数一、消息参数二;</font></span></p>
        <p> <font color="#000000">GWL_STYLE(程序中简写为STYLE):其值为-16,表示目标的“风格”;</font></span></p>
        <p> <font color="#000000">ES_PASSWORD(程序中简写为PASS)简写为PASS):其值为&amp;H20,表示目标具有录入口令的属性,即在录入时不回显;</font></span></p>
        <p> <font color="#000000">EM_SETPASSWORDCHAR(程序中简写为PASSCHAR):其值为&amp;H41C,表示传递密码特性。用sendmessage向目标传递此消息成功,则目标会将自身的输出信息以指定的密码形式给出。</font></span></p>
        <p> <font color="#000000">以下程序,通过sendmessage函数修改文本框Text1的“风格”属性,使其以指定的密码形式输出———不管用户录入的是什么内容,都以相同数量的“*”来显示。用户可以通过单点“Command1”按钮来显示Text1.Text的真正内容。</font></span></p>
        <pre> 
</font></span></pre>
         <br>
        DeclareFunctiongetfocusLib“user”()AsInteger<br>
        DeclareFunctiongetwindowlongLib“user”(ByValhandAsInteger,ByValind<br>
        ex<br>
        AsInte-ger)AsLong<br>
        DeclareFunctionsetwindowlongLib“user”(ByValhandAsInteger,ByValind<br>
        ex<br>
        AsInte-ger,ByValnewflagAsLong)AsLong<br>
        DeclareFunctionsendmessageLib“user”(ByValhandAsInteger,ByValmsgA<br>
        s<br>
        Integer,ByValwparaAsInteger,ByVallparaAsLong)AsLong<br>
        ConstSTYLE=-16<br>
        ConstPASS=&amp;H20<br>
        <br>
        ConstPASSCHAR=&amp;H41C<br>
        <br>
        SubCommand1_Click()<br>
        MsgBoxtext1.Text<br>
        EndSub<br>
        SubCommand2_Click()<br>
        End<br>
        EndSub<br>
        SubForm_Load()<br>
        Show<br>
        text1.SetFocus<br>
        hand%=getfocus()<br>
        flag&amp;=getwindowlong(hand%,STYLE)OrPASS<br>
        flag&amp;=setwindowlong(hand%,STYLE,flag&amp;)<br>
        flag&amp;=sendmessage(hand%,PASS-CHAR,Asc(“*”),0&amp;)<br>
        EndSub</font></span>
<p align="left"> 
  </table>
</div>
<p align="center"><a href="../../pian/vb.htm">回首页</a>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -