电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 软件教学
用vb制作常居上层的浮动工具箱_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
通过形象化的图标,浮动工具箱可以省去用户点击主菜单的麻烦。当鼠标位于其图标上时,在鼠标下方会自动“掉出”一个小标签,说明它的功能。而且常居上层,不会被打开的文件所覆盖。并且可以改变形状及位置,尽可能地减少所占用的桌面面积。

能不能在我们自己的应用程序中使用这种先进手段呢?这里介绍一种用VB来实现的简单方法。主要编程思路是:引用WindowsAPL函数,实现表单常居上层;建立控件数组,通过控件的MouseMove事件,引发注释的弹出和消失。

一、浮动工具箱的可视化实现方法

1.在Form1上放置控件SSRIBBON按钮(因为它本身有三种状态:按下、弹起、禁止使用,大部分图标按钮都是这类按钮)。再放置文本框Text1(也可以用Label控件,但效果会有所不同,稍后会讲到),再放置一个命令按钮Command1。各控件属性见表1(表中只列出一个例子,其它的只要修改相应的属性即可)。

2.单击GP3D1,按ALT+Del剪切,然后按ALT+Insert复制若干,形成控件数组GP3D1(0)、GP3D1(2)、GP3D1(3)……,再如法建立Text1(0)、Text1(1)、Text1(3)……。

3.调整按钮及文本框位置。

在此期间,每一项工作都是必要的,如文本框的Visible值为False,以确保程序启动时不显示文本框,而Enable值为False是为了在运行过程中,文本框不能输入文本。如果使用标签(Label)代替文本框,则不能纵向排列图标按钮,只能横向。因为下面的按钮会盖住Label,但使用Label要比文本框省内存。

为了实现常居上层的效果,必须调用WindowsAPI函数,事实上VB的很多方法都引用于WindowsAPI。这里我们用SetWindowsPos过程,此过程在User.exe中定义,它是Windows系统重要的动态链接库。在VB中引用API函数时,必须在通用声明部分声明注册。声明API函数往往比较麻烦且易出错,比如:

DeclareSubSetWindowPosLib″User″(ByValhwndAsInteger,ByVal
hWndInsertAfterAsInteger,ByValXAsInteger,ByValYAsInteger,ByVal
cxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)

如果所有的API函数声明都这么输入,效率太低。好在各版本的VB都提供了一个WindowsAPIHelp程序,打开它,搜索SetWindowPos,找到以后点击超文本带出解释,拷贝即可。

二、创建代码在通用声明部分输入下列代码并声明一些常量及全程变量:

DeclareSubsetwindowposLib″User″(ByValhwndAsInteger,ByVal
hWndInsertAfterAsInteger,ByValXAsInteger,ByValYAsInteger,
ByValcxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)

ConstSWP_NOSIZE=1

ConstSWP_nomove=2

Constflags=SWP_NOSIZEOrSWP_nomove

Consthwnd_topmost=-1

Consthwnd_notopmost=-2

DimIAsInteger

DimBAsInteger

为GP3D1按钮的MouseMove事件添加如下代码,这里仅实现鼠标在其上时注释器弹出、不在其上时隐去的功能,读者可再加一个计时器控件和一些代码,即可很容易地实现鼠标位于其上片刻后注释器弹出的效果,这样就不会出现鼠标“路过”按钮时,注释器即出现的结果了。

SubGP3D1_MouseMove(indexAsInteger,ButtonAsInteger,Shift

AsInteger,XAsSingle,YAsSingle)

I=index′记录下当前鼠标位于哪个按钮上

text1(I).Visible=True″使其弹出

IfB<>IThen′使其它按钮隐去

text1(B).Visible=False

EndIf

B=I′请好好体会这个变量B的作用

EndSub

为Command1按钮的Click事件添加如下代码:

SubCommand1_Click()

doWhileDoEvents()′用DoEvents()实现空闲循环下的多任务监测

setwindowposhwnd,hwnd_topmost,0,0,0,0,flags′实现常居上层

loop

EndSub

为Command1按钮的MouseMove事件添加如下代码:

SubCommand1_MouseMove(ButtonAsInteger,ShiftAsInteger,X

AsSingle,YAsSingle)

text1(I).Visible=False′鼠标离开按钮区,位于命令按钮上时隐去注释器

EndSub

为Form1的MouseMove事件添加如下代码:

SubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,X

AsSingle,YAsSingle)

text1(I).Visible=False′鼠标离开按钮区,进入表单时隐去注释器

EndSub->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·巧用SQL-DMO创建备份及校验的ASP应用
·ASP实现IE地址栏参数的判断
·运用ASP调用数据库中视图及存储过程
·让弹出窗口变得“听话”一些
·简单熟悉掌握ASP的语法和变量
·ASP中实现从dbf数据库导出数据到sql表
·ASP技巧:禁用页面缓存的五种方法
·所谓新云XSS跨站漏洞全公布
·ASP把长的数字用逗号隔开显示
·IIS虚拟主机网站防木马权限设置安全配置整理

最新文章
·网页设计之css+div PK table+css
·脚本控制三行三列自适应高度DIV布局
·Java 程序初始化过程详解
·Java实时应用程序中的内存管理
·如何掌握Java(J2SE篇)
·Hibernate和Jive缓存策略的比较
·Java与XML联合编程之SAX篇
·.text urlRewrite介绍
·JDOM操作XML文件
·纯CSS代码实现翻页


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号