专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vb控件显示最上层:用VB制作常居上层的浮动工具箱 »正文

vb控件显示最上层:用VB制作常居上层的浮动工具箱

来源: 发布时间:星期四, 2009年1月15日 浏览:39次 评论:0
  通过形象化图标浮动工具箱可以省去用户点击主菜单麻烦当鼠标位于其图标上时在鼠标下方会自动“掉出”个小标签介绍说明它功能而且常居上层不会被打开文件所覆盖并且可以改变形状及位置尽可能地减少所占用桌面面积 能不能在我们自己应用中使用这种先进手段呢?这里介绍种用VB来实现简单思路方法主要编程思路是:引用 Windows APL实现表单常居上层;建立Control控件通过Control控件 MouseMove事件引发注释弹出和消失  、浮动工具箱可视化实现思路方法

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

  2.单击GP3D1按 ALT+Del剪切然后按 ALT+Insert 复制若干形成 Control控件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 找到以后点击超文本带出解释 拷贝即可 2、创建代码 在通用声明部分输入下列代码并声明些常量及全程变量:Declare Sub windowpos 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, Sht 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实现空闲循环下多任务监 测

  windowpos hwnd, hwnd_topmost, 0, 0, 0, 0, flags ′实现常 居上层

  loop

  End Sub

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

  Sub Command1_MouseMove (Button As Integer, Sht As Integer, X As

  Single, Y As Single)

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

  End Sub

  为Form1MouseMove事件添加如下代码:

  Sub Form_MouseMove (Button As Integer, Sht As Integer, X As Single, Y

  As Single)

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

  End Sub

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: