| 域名空间 下载中心 社区论坛 信息公告 MY小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
用VB制作常居上层的浮动工具箱http://www.iyit.net 日期:2006-5-22 15:54:41 来源:网络转载 点击: |
能不能在我们自己的应用程序中使用这种先进手段呢?这里介绍一种用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)、Text1(1)、Text1(3)……。 3.调整按钮及文本框位置。 在此期间,每一项工作都是必要的,如文本框的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, ByVal 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, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags 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 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:用VB编写FLASH动画播放器 下一篇:VB中Winsock控制的UDP协议的使用 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||