最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > VB开发

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

日期:09-14    来源:中国设计秀    作者:cnwebshow.com

在应用程序中,有时需要用户录入一些不宜在屏幕上直接显示的内容,如用户口令或机密数据。我们已熟知,在Foxbase/Foxpro中这一功能可以用SETCONSOLEOFF命令关闭向屏幕的回显来实现。那么,在VisualBasicforWin-dows中如何做到这一点呢? YTs中国设计秀
YTs中国设计秀
一个容易想到的方法是利用文本框的Key-Press事件,但为了处理用户对文字的编辑(如删除、插入),则还要再用其它变量存放真正输入的内容,而且必须书写大量复杂的控制程序。实践证明,这种方法比较繁琐,不便使用。 YTs中国设计秀
YTs中国设计秀
笔者在用VB编程时发现,Windows文本框可以响应许多消息,那么,可不可以利用WindowsAPI函数sendmessage将控制特性的消息传递给文本框呢?如果可行,则可以将使目标以密码形式输出的消息传递给文本框,不就可以制作出不回显文字的文本框了吗? YTs中国设计秀
YTs中国设计秀
答案是肯定的。笔者使用以上思路实现了这一功能。以下是程序中用到的几个API函数和有关的消息: YTs中国设计秀
YTs中国设计秀
getfocus():返回获得输入焦点的目标句柄; YTs中国设计秀
YTs中国设计秀
getwindowlong():取得指定目标的信息,第二个参数为GWL_STYLE时将返回目标的“风格”属性; YTs中国设计秀
YTs中国设计秀
setwindowlong():把新的属性值赋予指定的目标。该函数的三个参数分别为目标的句柄、属性类型、新属性值; YTs中国设计秀
YTs中国设计秀
sendmessage():向目标发送一条消息。该函数的四个参数分别为接收消息的目标句柄、消息、消息参数一、消息参数二; YTs中国设计秀
YTs中国设计秀
GWL_STYLE(程序中简写为STYLE):其值为-16,表示目标的“风格”; YTs中国设计秀
YTs中国设计秀
ES_PASSword(程序中简写为PASS)简写为PASS):其值为&H20,表示目标具有录入口令的属性,即在录入时不回显; YTs中国设计秀
YTs中国设计秀
EM_SETPASSwordCHAR(程序中简写为PASSCHAR):其值为&H41C,表示传递密码特性。用sendmessage向目标传递此消息成功,则目标会将自身的输出信息以指定的密码形式给出。 YTs中国设计秀
YTs中国设计秀
以下程序,通过sendmessage函数修改文本框Text1的“风格”属性,使其以指定的密码形式输出———不管用户录入的是什么内容,都以相同数量的“*”来显示。用户可以通过单点“Command1”按钮来显示Text1.Text的真正内容。 YTs中国设计秀
YTs中国设计秀
DeclareFunctiongetfocusLib“user”()AsInteger YTs中国设计秀
DeclareFunctiongetwindowlongLib“user”(ByVal handAsInteger,ByVal indexAsInte-ger)AsLong YTs中国设计秀
DeclareFunctionsetwindowlongLib“user”(ByVal handAsInteger,ByVal indexAsInte-ger,ByVal newflagAsLong)AsLong YTs中国设计秀
DeclareFunctionsendmessageLib“user”(ByVal handAsInteger,ByVal msg As Integer,ByVal wparaAsInteger,ByVallparaAsLong)AsLong YTs中国设计秀
ConstSTYLE=-16 YTs中国设计秀
ConstPASS=&H20 YTs中国设计秀
YTs中国设计秀
ConstPASSCHAR=&H41C YTs中国设计秀
YTs中国设计秀
SubCommand1_Click() YTs中国设计秀
MsgBoxtext1.Text YTs中国设计秀
EndSub YTs中国设计秀
SubCommand2_Click() YTs中国设计秀
End YTs中国设计秀
EndSub YTs中国设计秀
SubForm_Load() YTs中国设计秀
Show YTs中国设计秀
text1.SetFocus YTs中国设计秀
hand%=getfocus() YTs中国设计秀
flag&=getwindowlong(hand%,STYLE)OrPASS YTs中国设计秀
flag&=setwindowlong(hand%,STYLE,flag&) YTs中国设计秀
flag&=sendmessage(hand%,PASS-CHAR,Asc(“*”),0&) YTs中国设计秀
End SubYTs中国设计秀

本文引用地址:/bc/article_61286.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明