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

用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

更轻松的获取APK文件安装时间 Android控件对应表,丰富你的UI设计 Android开发进阶之NIO非阻塞包(八) Android开发进阶之NIO非阻塞包(七) Android开发进阶之NIO非阻塞包(六) Android开发进阶之NIO非阻塞包(五) Android开发进阶之NIO非阻塞包(四) Android开发进阶之NIO非阻塞包(三) Android开发进阶之NIO非阻塞包(二) Android开发进阶之NIO非阻塞包(一) Android开发进阶教程系列(一)目录篇 Android开发调试工具TraceView多图演示 Android JNI实例代码(二) Android JNI实例代码(一) Android JNI开发高级篇 Android NDK开发技巧二 Android JNI开发进阶篇 Android JNI开发提高篇 Android JNI开发入门篇 Android NDK开发技巧一 Android数据库ContentProvider封装原理 Android Permission列表,ADT 0.9.9 bug Android Theme和Styles内部定义解析 Android平台下图表绘制相关方法 Activity类的runOnUiThread方法你用过吗 Android上鲜为人知的UI控件介绍和使用 获取Android手机上的图片和视频缩略图 Android JSON解析示例代码 Android ANR介绍与避免 Windows Phone 7 SDK完善度不如Android m3 Android中使用定时器TimerTask类介绍 想用Mediaplaer控件播放某个声音文件若干次,怎么控制? 如何通过窗口句柄来获得窗口所在进程的ID 怎么找到DataGrid中的Table呢? 请问用VB怎么才能把1个数据库里的表全部读入LISTBOX里? JmaiL 发邮件的问题?? 备份还原问题 如何用钩子得到中文啊? interbase的存储过程中如果想返回多条结果应该怎么办? 请问!谁能提供算命、测字等原代码和后台库!!500分相送!!!! 我的用客户端连上ORACLE,怎么我的SQLPULS打开中文全是乱码,执行语句后看不到结果是什么 方案讨论:如何自定义并实现错误与例外Exception处理对象,并建立里统一的ErrorMsg 读数据库错误??急急急,在线等(马上给分) 缓存 到的 是什么定义啊 (斑竹来 告诉我吧) 系统分析师、系统设计师有什么区别? DB2技术讨论(1)如何简单理解表空间的定义 vc的ado数据库连接问题 请问linux的个人版和服务器版到底有什么区别?? DB2技术讨论(2)如何简单理解表模式的定义 int& operator[] (unsigned i); 存储过程问题 DB2技术讨论(3)如何处理索引 马上结:我用ASP和JSP分别写了一个人主页,可是服务器只支持PHP,所以我要写PHP.. 我要构建一个网吧?回答问题者都有分 DB2技术讨论(4)如何处理大量数据的增删 郁闷,没有理由,再散分一百,随便进来聊聊 昨天真的真的受了刺激 怎樣將dbedit控件的事件和它所在的form方法相關起來? 如何实现DOS工作站连接到LINUX服务器 DB2技术讨论(5)如何在建好的数据库中设定数据库和表的维护信息 feeboby(诺曼之路) 请进,刚才IE出现js的问题,帖子结了,但分没加上去,另开新帖,100分送上 如何把两个系统合并为一个系统(两个独立的系统) 如何实现集成?? 请教一个apache2.0加tomcat4.3.x时访问目录控制问题 那里有Zend的反编译软件下啊? 大家给我提建议拉,java项目该如何做?交友 这样的asp.net程序消耗是不是太高? 满分求救: 通过 scope="session" 定义的bean 我想继续在包含页中使用。。 大家给个名字建议吧 BDE问题 那个说我骗你手提电脑的进来!!!!!!! 谁知道啊? 直接写内存的Win32 API? 向高手请教.NET下怎样实现聊天室功能? 请教一个apache2.0加tomcat4.3.x时访问目录控制问题 关于JFC的问题 如何鼠标指到单元格中,把单元格中的文字颜色改变 小弟菜鸟,请教一个小问题 初学者问题:关于Serialize()用法 寻求好的解决方法 新手求助?谁有较好的打印控件,或较好的解次方案? 申请数据结构-算法版主 初学者问题:MFC数据库(ACCESS) “饬”什么意思 伤饬是什么意思 孑孓是什么? “饬”的意思是什么啊?“饬”的意思有哪些啊,有哪个可以给我说, 孑孓 是什么? 什么叫人头税?本来按照土地来摊派税负,现在转而按人丁摊派~叫人头费~什么叫人头费? 732的平方-268的平方 利用因式分解计算 732²-268²=?利用因式分解计算 利用因式分解法计算732的平方-268的平方 如图,直角坐标系中,等腰梯形ABCD中,BC//AD,BC=1,∠D=45°,B点的坐标为(-4,2),求A、C、D三点的坐标 小辣椒的手机好不好用?谁用过呢? 联合国计划成立预警机构 防范小行星撞俄罗斯称政府内部系统可防止领导人电话女童目睹家人在车祸中被烧死 获赔1.安倍经济学:IMF认为有益经济 日本女子坚持嫁给残障男友 坚贞真爱感动世策划暗杀曼德拉犯罪团伙获重判 主犯拒日媒:安倍将亲自向中国救人留学生颁发萌猫每天造访商店 望着橱窗里老鼠或鱼奥巴马医改网站安全漏洞细节曝光 内测伊拉克向美国请求军事援助 对抗“基地美一客机紧急迫降阿拉斯加偏远小镇 无吃得营养跑得才更好日程表许你繁花似锦 最好的篇章且看当下(1平举哑铃,打造“梦幻”肩膀罗斯东莞教运球节奏变化是王道万名贫困残疾儿将获救助出生人口性别比发展实验区落户荥阳“龙凤胎”姐弟同进河大变身微型游园全市大招商已对接600余项目合同情人执掌盛唐天下无双康熙国策顾问江湖第一高手异世盗皇大宋之天子门生重生在杀戮空间星宇始神忘了忘不了-《终极三国超级附魔大云寺铜钟旅游渥洼池旅游西汉酒泉胜迹旅游蠡湖大桥旅游金沙岛旅游大行宫旅游石臼湖旅游冷水江波月洞旅游中东铁路博物馆旅游吊桥公园旅游始祖山旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘