转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用VB制作常居上层的浮动工具箱         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:527 更新时间:2009/4/23 14:58:24

    能不能在我们自己的应用程序中使用这种先进手段呢?这里介绍一种用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 setwin pos 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 $#@60;$#@62; 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


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台