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

宇灭

宇灭

2016-02-19 18:27

下面图老师小编跟大家分享一个简单易学的用VB制作常居上层的浮动工具箱教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!
通过形象化的图标,浮动工具箱可以省去用户点击主菜单的麻烦。当鼠标位于其图标上时,在鼠标下方会自动“掉出”一个小标签,说明它的功能。而且常居上层,不会被打开的文件所覆盖。并且可以改变形状及位置,尽可能地减少所占用的桌面面积。
  
  能不能在我们自己的应用程序中使用这种先进手段呢?这里介绍一种用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″使其弹出
  
  IfBIThen′使其它按钮隐去
  
  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->

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
用VB制作常居上层的浮动工具箱

几何画板工具箱怎么用

电脑网络
几何画板工具箱怎么用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

通用PE工具箱制作方法

电脑网络
通用PE工具箱制作方法

用逐鹿工具箱文字出现乱码怎么解决

电脑网络
用逐鹿工具箱文字出现乱码怎么解决

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

矮人dos工具箱win7怎么用

电脑网络
矮人dos工具箱win7怎么用

如何定制浮动工具条

C语言教程 C语言函数
如何定制浮动工具条

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

浅谈Ajax技术与ERP

浅谈Ajax技术与ERP

如何解决ajax跨域的问题

如何解决ajax跨域的问题
下拉加载更多内容 ↓