您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  如何在VB中制作不回显的文本框 【注册男护士专用博客】          

如何在VB中制作不回显的文本框

www.nanhushi.com     佚名   不详 

在应用程序中,有时需要用户录入一些不宜在屏幕上直接显示的内容,如用户口令或机密数据。我们已熟知,在Foxbase/Foxpro中这一功能可以用SETCONSOLEOFF命令关闭向屏幕的回显来实现。那么,在VisualBasicforWin-dows中如何做到这一点呢? 

一个容易想到的方法是利用文本框的Key-Press事件,但为了处理用户对文字的编辑(如删除、插入),则还要再用其它变量存放真正输入的内容,而且必须书写大量复杂的控制程序。实践证明,这种方法比较繁琐,不便使用。 

笔者在用VB编程时发现,Windows文本框可以响应许多消息,那么,可不可以利用WindowsAPI函数sendmessage将控制特性的消息传递给文本框呢?如果可行,则可以将使目标以密码形式输出的消息传递给文本框,不就可以制作出不回显文字的文本框了吗? 

答案是肯定的。笔者使用以上思路实现了这一功能。以下是程序中用到的几个API函数和有关的消息: 

getfocus():返回获得输入焦点的目标句柄; 

getwindowlong():取得指定目标的信息,第二个参数为GWL_STYLE时将返回目标的“风格”属性; 

setwindowlong():把新的属性值赋予指定的目标。该函数的三个参数分别为目标的句柄、属性类型、新属性值; 

sendmessage():向目标发送一条消息。该函数的四个参数分别为接收消息的目标句柄、消息、消息参数一、消息参数二; 

GWL_STYLE(程序中简写为STYLE):其值为-16,表示目标的“风格”; 

ES_PASSWORD(程序中简写为PASS)简写为PASS):其值为&H20,表示目标具有录入口令的属性,即在录入时不回显; 

EM_SETPASSWORDCHAR(程序中简写为PASSCHAR):其值为&H41C,表示传递密码特性。用sendmessage向目标传递此消息成功,则目标会将自身的输出信息以指定的密码形式给出。 

以下程序,通过sendmessage函数修改文本框Text1的“风格”属性,使其以指定的密码形式输出———不管用户录入的是什么内容,都以相同数量的“*”来显示。用户可以通过单点“Command1”按钮来显示Text1.Text的真正内容。 

DeclareFunctiongetfocusLib“user”()AsInteger 
DeclareFunctiongetwindowlongLib“user”(ByVal handAsInteger,ByVal indexAsInte-ger)AsLong 
DeclareFunctionsetwindowlongLib“user”(ByVal handAsInteger,ByVal indexAsInte-ger,ByVal newflagAsLong)AsLong 
DeclareFunctionsendmessageLib“user”(ByVal handAsInteger,ByVal msg As Integer,ByVal wparaAsInteger,ByVallparaAsLong)AsLong 
ConstSTYLE=-16 
ConstPASS=&H20 

ConstPASSCHAR=&H41C 

SubCommand1_Click() 
MsgBoxtext1.Text 
EndSub 
SubCommand2_Click() 
End 
EndSub 
SubForm_Load() 
Show 
text1.SetFocus 
hand%=getfocus() 
flag&=getwindowlong(hand%,STYLE)OrPASS 
flag&=setwindowlong(hand%,STYLE,flag&) 
flag&=sendmessage(hand%,PASS-CHAR,Asc(“*”),0&) 
End Sub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。