文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发VB在VB中自制IE风格按纽控件
精品推荐
特别推荐
·VB表格控件总览与例程分析
·用VB6.0制作画图板
·VB打造超酷个性化菜单(六)
·MSHFlexGrid 控件的应用
·Visual Basic 控件简介
·利用硬盘序列号计算软件注册码
·计算机等级考试二级VB常用算法:排序
·用diskid.dll和disk32.dll获得硬盘序列号
热点TOP10
·VB求数据表记录总数的最佳方案
·用VB.net2008编写数据查询窗体
·VBScript新手入门初学教程:VBScript写在哪里?
·VBScript新手入门初学教程:VBScript简介
·DB2 9 基础认证指南系列教程
·Visual Basic 9 不完全入门之LINQ进阶
·Visual Basic构建线程安全的Singleton
·了解VB编写病毒的大体方法

在VB中自制IE风格按纽控件

日期:2008年11月5日 作者: 查看:[大字体 中字体 小字体]


    网上的IE风格按纽控件不可谓少,然而天下的免费午餐总不会让你轻轻松松到吃下去,其中个味众人自知。其实,在VB6.0中,IE风格按纽很容易制作,真正的核心代码只需调用两个API函数。

  按常规,IE风格按纽的制作原理是,放置四条边线在Image和Label控件四周,在 Image和Label控件的MouseMove事件中,改变左,上,右,下线的Visible 和 BorderColor属性,按纽呈现浮起效果,同时改变Image控件的Picture 属性,调入盘旋(Hover)图片;在Image和Label的MouseDown事件中通过改变Image和Label控件的位置(右下移)按纽呈现按下效果;鼠标离开按纽,按纽恢复平坦(Flat)状态。

  如果你正在这样做,将会发现一个致命的问题。那就是,MouseMove事件只能检测到鼠标在Image和Label两个控件本身范围内的移动,你没有办法检测鼠标的离开。 “计算机世界”曾经登载过一个解决的办法,利用SetCapture和ReleaseCapture API函数。经SetCapture设定的控件可以强制性地捕捉鼠标在整个屏幕上的移动。这样,不管鼠标是不是在控件界面范围内移动,控件都可以捕捉得到。经过实践发现这个解决方案仍然存在一个问题,那就是,SetCapture所设定控件在 ReleaseCapture前,自动提示(ToolTipText)功能被抑制。这意味着这样编制的按纽没有自动提示功能,对很多人来说,这难以忍受。

  WIN32 API函数集是个不折不扣的庞大宝藏,你总能从里面找到你需要的工具。 GetCursorPos和WindowFromPoint两个函数可以完美地解决这个问题。 GetCursorPos可以返回鼠标指针相对整个屏幕的坐标,WindowFromPoint 则根据鼠标指针的坐标,返回指针所处的控件的句柄。在这里,还需要引入一个定时器 (Timer)控件。

  整个编程原理是,在UserControl_Show事件中,先将定时器置为无效。在Image和Label的MouseMove事件中,执行使按纽浮起的代码,然后将定时器置为有效,这时定时器开始倒计时,在计时器的Timer事件中,用上述API函数检测鼠标指针是否已经离开了按纽,如果离开,则使按纽恢复平坦状态并立即使计时器无效,否则继续检测。我们看到,计时器的真正用途是用来触发事件,以检测鼠标的离开。将计时器置为无效是为了在不必要的时间,降低计时器对CPU的占用。

  以下是函数和所需数据类型声明。

  

  Private Type POINTAPI

  X As Long

  Y As Long

  End Type

  Private Declare Function GetCursorPos Lib "user32" _

  (lpPoint As POINTAPI) As Long

  Private Declare Function WindowFromPoint Lib "user32" _

  (ByVal xPoint As Long, ByVal yPoint As Long) As Long

  

   在VB6.0中新建一个ActiveX Control项目。添加LineLeft,LineTop,LineRight, LineBottom四条边线,一个Image控件Image1,一个Label标签控件Label1,一个定时器控件Timer1。关于用VB创建ActiveX控件的步骤这里不作描述(可以参考本文所附完整源代码)。与按纽制作有关的主要代码如下:

  

  Private Sub UserControl_Show()

  Timer1.Interval = 1 1/1000 秒

  Timer1.Enabled=False 关闭定时器

  将UserControl的提示信息引入Image1,Label1控件,

  If UserControl.Ambient.UserMode = True Then

  在RunTime

  Image1.ToolTipText = UserControl.Extender.ToolTipText

  Label1.ToolTipText = UserControl.Extender.ToolTipText

[1] [2] 下一页 



上一篇:在VB中自动注册控件的三种方法

下一篇:在程序中做出信息的分隔线
相关文章:
·photoshop 制作出可爱韩风格字体
·Photoshop与Wacom数码板处理古典风格照片
·非主流ps教程:Alfa风格非主流照片制作
·Photoshop制作矢量风格书本ZIP图标
·Photoshop制作甜美风格非主流图片
·Photoshop教程:制作Vista风格桌面
·非主流ps教程:Shine风格非主流照片制作
相关软件:
·PSP自制系统IRSHELL最新3.62版
·自制美味朝鲜泡菜
·中华民族饮食风格大观
·我行我素--个人网站总体风格设计
·集成GHOST8.3的深山红叶 ISO 自制
·人际关系与处世风格
·伊苏7菲尔迦纳的誓约 rar/iso 日式风格RPG

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot