说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB制作常居上层的浮动工具箱

HTML文档下载 WORD文档下载 PDF文档下载
用VB制作常居上层的浮动工具箱

通过形象化的图标,浮动工具箱可以省去用户点击主菜单的麻烦。当鼠标位于其图
标上时,在鼠标下方会自动“掉出”一个小标签,说明它的功能。而且常居上层,
不会被打开的文件所覆盖。并且可以改变形状及位置,尽可能地减少所占用的桌面
面积。 能不能在我们自己的应用程序中使用这种先进手段呢?
这里介绍一种用VB来实现的简单方法。主要编程思路是:引用 Windows APL函数,
实现表单常居上层;建立控件数组,通过控件的 MouseMove事件,引发注释的弹出
和消失。
一、浮动工具箱的可视化实现方法
1.在Form1 上放置控件SSRIBBON按钮(因为它本身有三种状态:按下、弹 起、禁止
使用,大部分图标按钮都是这类按钮)。再放置文本框 Text1(也可以用 Label控件,
但效果会有所不同,稍后会讲到),再放置一个命令按钮Command1。各控件属性见
表1(表中只列出一个例子,其它的只要修改相应的属性即可)。
2.单击GP3D1,按 ALT+Del剪切,然后按 ALT+Insert 复制若干,形成 控件数
组GP3D1(0)、GP3D1(2)、GP3D1(3)……,再如法建立Text1(0)、T ext1(1)、Text1
(3)……。
3.调整按钮及文本框位置如图所示,右表为Tools窗体的特性表。 在此期间,每
一项工作都是必要的,如文本框的Visible值为 False,以 确保程序启动时不显示
文本框,而Enable值为False是为了在运行过程中 ,文本框不能输入文本。如果使
用标签(Label)代替文本框,则不能纵向 排列图标按钮,只能横向。因为下面的按
钮会盖住Label,但使用Label要比文本框省内存。 为了实现常居上层的效果,必
须调用Windows API 函数,事实上VB的很多方法都引用于Windows API 。这里我们
用SetWindowsPos过程,此过程在User.exe中定义,它是Windows系统重要的动态链
接库。在VB中引用 API函数时,必须在通用声明部分声明注册。声明API函数往往
比较麻烦且易出错,比如: Declare Sub SetWindowPos Lib ″User″ (ByVal
hwnd As Integer, B yVal hWndInsertAfter As Integer,ByVal X As Integer,
ByVal Y As Integer,ByVal cx As Integer, ByVal cy As Integer, ByVal
wFlags As Integer) 如果所有的API函数声明都这么输入,效率太低。好在各版本
的VB都提供了一个Windows API Help程序,打开它,搜索 SetWindowPos ,找到以
后点击超文本带出解释, 拷贝即可。
二、创建代码 在通用声明部分输入下列代码并声明一些常量及全程变量:
Declare Sub setwindowpos Lib ″User″ (ByVal hwnd As Integer, B yVal
hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer,
ByVal cx As Integer, ByVal cy As Integer, ByVal wFlag s As Integer)
Const SWP_NOSIZE = 1 Const SWP_nomove = 2 Const flags = SWP_NOSIZE Or
SWP_nomove Const hwnd_topmost = -1 Const hwnd_notopmost = -2 Dim i As
Integer Dim B As Integer 为GP3D1按钮的MouseMove 事件添加如下代码,这里仅
实现鼠标在其上时注释器弹出、不在其上时隐去的功能,读者可再加一个计时器控
件和一些代码,即可很容易地实现鼠标位于其上片刻后注释器弹出的效果,这样就
不会出现鼠标“路过”按钮时,注释器即出现的结果了。
Sub GP3D1_MouseMove (index As Integer, Button As Integer, Shift As
Integer, X As Single, Y As Single) i = index ′记录下当前鼠标位于哪个按
钮上
text1(i).Visible = True ″使其弹出 If B <> i Then ′使其它按钮隐去
text1(B).Visible = False End If B = i ′请好好体会这个变量B的作用
End Sub
为Command1按钮的Click事件添加如下代码:
Sub Command1_Click ()
do While DoEvents() ′用DoEvents()实现空闲循环下的多任务监 测
setwindowpos hwnd, hwnd_topmost, 0, 0, 0, 0, flags ′实现常 居上层
loop
End Sub
为Command1按钮的MouseMove事件添加如下代码:
Sub Command1_MouseMove (Button As Integer, Shift As Integer, X As
Single, Y As Single)
text1(i).Visible = False ′鼠标离开按钮区,位于命令按钮上 时隐去注释器
End Sub
为Form1的MouseMove事件添加如下代码:
Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y
As Single)
text1(i).Visible = False ′鼠标离开按钮区,进入表单时 隐去注释器
End Sub

get()-JQuery API gt(pos)-JQuery API index(subject)-JQuery API length-JQuery API lt(pos)-JQuery API size()-JQuery API CSS-JQuery API css(key, value)-JQuery API css(name)-JQuery API css(properties)-JQuery API height(val) -JQuery API height()-JQuery API width(val)-JQuery API width()-JQuery API DOM-JQuery API addClass(class)-JQuery API attr(key,fn)-JQuery API attr(key, value) -JQuery API attr(name)-JQuery API attr(properties) -JQuery API html(val)-JQuery API html()-JQuery API removeAttr(name)-JQuery API removeClass(class)-JQuery API text(val)-JQuery API text()-JQuery API toggleClass(class)-JQuery API val(val)-JQuery API val-JQuery API after(content) -JQuery API append(content) -JQuery API C++builder6 下载 在线等待有关TurboC4.3的安装问题(还有D版VC的安装) 如何通过EJB删除数据库中的一行记录? 请帮忙 远程桌面共享的密码在注册表中的位置???急!!! 推荐软件:WinReplace批量文件内容替换工具 请推荐一个Java Decompiler 怎样用VB 检测EXCEL是否运行出 (菜鸟级100分) 高分求购 数据库中的OLE字段的读取问题。 研考快了,有几到题莫名其妙,求帮助! 求助大虾??????? 帮忙!! 如何获得当前程序的完整路径和文件名? 高分请教:resin2.1.6+sql2000下,jsp提取的字段显示均为乱码 Ftpcommand ? 如何获取最小化按钮消息?PreTranslateMessage(MSG* pMsg)如何处理? 请教高手——图片如何转换成视频? 河北的高程什么时间报名?什么时间考呀? 等待在线 JS文件打开乱码,如何看到其真实内容? 急,在线等待,90获取如何让Collection集合内对象的顺序改变!!! 在那里可以找到浪潮英信服务器 的声卡和显卡的驱动程序? 一个文学性网页,有砖头尽量扔过来。散分!!! 在jsp中连接oracle报错,请高手帮我分析原因(100分) 很丢脸的,兄弟们来帮我一下哦,? 我的困惑 谁知道哪里可以下载vtk4.0吗? 两个关于日期的问题,请大家帮帮手. #include windows.h 的问题 OS 很多近期帖子打不开,WHAT CAN I DO? 求regionMatches的使用实例! VS.net的安装错误问题 TOP托普万岁! 河北的高程什么时间报名?什么时间考2003年呀? 等待在线 java/swing/jtable的强烈问题 在Linux中如何配多个ip地址? 免费给你www.***.net www.***.com 快来每人有分得 大家不帮忙我就死定了!!!(来者有分,解决问题再送200!) java/swing/jtable的强烈问题 我为什么看不到我自己发的问题? 向高手求助!如何查找指定文件? 授权问题! 怎样解决向右展开的菜单(层)被select下拉框遮盖的问题!!!(以前的帖子打不开了) 向高手求助!如何查找指定文件? 怎么在JAVA中实现只有让一个子类才能访问它父类的属性,用private,还是protected? 救命呀,愿意所有的分相送(4000多分) 再问,怎样确定某一SQL SERVER 2000的连接中,有多少个DATABASE,他们的名字是什么?? 大家好,谁能告诉我并行排序的算法 关于控件数组的有关问题 大家来看一下啊,,, 请问版主!!!本论坛搜索到的帖子为什么打不开呢? 第二季"好声音"好友变对手 好声音导师上演新“老友记奶爸金志文的人生“三级跳”那一年我们一起追过的杨32郎杨坤“中吴莫愁 那一年我们一起追过的《中国好李代沫发新专辑 “中国好声音”四大导《好声音》阿妹爱撒娇爱跳舞 那英女王《好声音来了》探秘录制现场 盘点第二第二季好声音开机发布会 张惠妹戏称自第二季《中国好声音》开录 关于抢人的《好声音》心灵大使阿妹开家长会 姚贝第二季《中国好声音》配置升级 东北好李代沫探班录制现场 揭秘导师休息室内《中国好声音》第二季 女王那英凶残的张惠妹太胖被调侃 那英坦言太冷静错过第二季《中国好声音》才录3天 那英已好声音南宁巡演 嗨翻全场《中国好声音》配置升级 东北好声音抢《中国好声音》配置升级 东北好声音抢豪门媳妇郭晶晶标配揭秘 从头到脚全是硕士晒与四位前女友毕业合照 网友惊呼讲故事、讲案例、做模拟练习 让孩子出揭阳:七星彩500万旺站受表彰胜负彩仅爆1注500万 668万奖池合肥火车南站 明日开通运营导演:请大家卸下科学包袱 尽情享受电广东工艺大师精品首度进京办展欢迎关注新快报新学堂奥巴马:完全反对美国正试图以某种方式探鱼 吃的不是烤鱼,是情怀今晚开奖彩种 双色球、南粤36选7、马常胜《虚谷》演绎梵音琴鸣双色球1333万头奖创派奖新高 江门开奖公告曝埃里克森与上港草签合同 年薪约执教克拉默上演半场乌龙汕头:顶呱刮门前销售火爆月中来琶洲品小吃尼日利亚一学校遭袭 至少78人死亡全国养老金“趴窝”20年少赚1.3万“限购松绑离婚少了”说明了什么每年筹2亿资金为职工办十件实事
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘