网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Basic/VB类-> VB中实现“无标题”窗体的移动

VB中实现“无标题”窗体的移动
作者:jack_yu 来源:cfanclub 加入时间:2005-2-28
相关文章 相关书籍:
 在一些流行的应用软件中,均采用了无标题栏的窗体设计,显得时尚美观。在VB中,只要将“caption”属性设为空即可实现。不过问题随之而来:一旦窗体栏消失,怎样实现窗体的移动呢?经过试验总结出如下代码,现与大家共享:

  首先,新建“工程1”,将Form1的“Caption”属性设为空,在窗体的通用声明区中加入如下代码:

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long '获取鼠标位置

Private Type POINTAPI

x As Long

y As Long

End Type

Dim zb As POINTAPI 'zb是存放坐标的变量

Dim cx As Integer

Dim cy As Integer

Dim moveit As Boolean

注:以上的GetCursorPos API函数及POINTAPI类型可由VB自带的“API浏览器”中得到。

窗体代码如下:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

moveit = True '按下鼠标,进入可移动状态。

cx = x 'cx记录下鼠标此时在窗体中的横坐标。

cy = y 'cy记录下鼠标此时在窗体中的纵坐标。

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

moveit = False '鼠标弹起,移动结束。

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

If moveit = True Then

GetCursorPos z '得到鼠标的位置

Form1.Move z.x * 15 - cx - 65, z.y * 15 - cy - 350 '这行代码是核心!由于VB中的缺省坐标单位是“Twips”,而用GetCursorPos得到的坐标是以“Pixel”为单位的。所以应将“z.x”,“z.y”转化为以“Twips”为单位的数值,“15(以分辨率为800*600为准)”就是Screen.Width与Screen.TwipsPerPixelX或(Screen.Height与Screen.TwipsPerPixelY)的比值,若屏幕使用其他的分辨率可依此类推。减去cx与cy为了使窗体从原地开始移动(大家可以去掉cx与cy,再看一看结果就明白了)。由于窗体的标题栏(虽然消失但移动还是以它为准)与边框有一定的高度和宽度,会造成开始移动时的窗体定位不精确,反复实践发现以上算法最合适。

End If

End Sub

按下“F5”键,效果不错吧!

供大家参考!!!!!!

您知道以下这些扩展名都是 VB 指定给【设计阶段文件】的扩展名吗?

(LOVESHE)

扩展名 用於 
VB6 VB5 VB4-32 VB4-16 VB3 
.bas Basic 模组 
* * * * * 
.cls 物件类别模组 
* * * *   
.ctl 使用者控制项文件 
* *       
.ctx 使用者控制项二进位文件 
* *       
.dca 现用设计师快取文件 
* *       
.dep 安装精灵附属文件 
* *       
.dob 使用者文件表单 
* *       
.dox 使用者文件二进位表单文件 
* *       
.dsr 现用设计师文件 
* *       
.dsx 现用设计师二进位文件 
* *       
.frm 表单文件 
* * * * * 
.frx 二进位表单文件 
* * * * * 
.log 载入错误的记录档 
* * * * * 
.oca 控制项 Typelib 文件 
* * * *   
.pag 属性页文件 
* *       
.pgx 二进位属性页文件 
* *       
.res 资源档 
* * * *   
.swt Visual Basic 安装精灵范本文件 
* *       
.tlb Remote Automation Typelib 文件 
* *       
.vbg Visual Basic 群组专案 
* *       
.vbl 使用者控制项授权文件 
* *       
.vbp Visual Basic 专案 
* * * *   
.vbr Remote Automation 注册文件 
* * * *   
.vbw Visual Basic 专案工作区 
* *       
.vbz 精灵启动文件 
* * * * * 
.wct Webclass 范本文件 
*         
.ocx 控制项文件 * * * *   
.vbx 控制项文件       * * 
.mak Visual Basic 专案 * * * * *
我很想结交一些VB之类的高手。。


[文章录入员:sky365]

相关文章 相关书籍:
本站推荐内容

近期主机类热搜关键词:
美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

Basic/VB类
C/C++/VC
C++Builder
Basic/VB类
Delphi/Pascal
Java编程
FORTRAN
其它
电脑教程阅读排行
·VB学习一点通
·VB设计动画时钟
·在Visual Basic 6....
· 用VB6.0编写手机短信发送 ...
·VB实现文件数据对SQL Ser...
·利用Visual Basic操作...
·VB实现图像在数据库的存储与显示
·用Visual Basic6.0...
·Visual Basic代码优化...
· VB中实现“无标题”窗体的移动...