首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 学院论坛
精选专题 | 精美壁纸 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 图书 | 黑客教材
Flash教程| 卡通制作 | AutoCAD | 3DMax实例 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
当前位置:eNet硅谷动力 > 学院频道 > VB

在VB中实现移动没有标题栏的窗口
2004-03-15 08:32 来源:eNet论坛
【简 介】
有很多软件为了实现特殊的显示效果,采用非矩形的窗体,而这些窗体往往没有标题栏。想要移动一个没有标题栏的窗口是不那么容易的。下面我介绍两种在VB中采取不同原理的方法移动一个没有标题栏的窗口。
    
加入收藏  设为首页

  方法一


  这种方法是在窗体的MouseDown、MouseUp和MouseMove等事件的处理过程中添加代码,实现在鼠标左键按下后移动时,改变窗体的Left和Top属性,实现移动无标题栏的窗体。

  进入VB,把窗体Form1的BorderStyle属性设置为0-None(无标题栏),再窗体上添加一个ButtonCommand组件,用来关闭程序。代码如下:

  Private Type POINT

   X As Single

   Y As Single

  End Type

  Dim FormP As POINT

  '记录窗体原始位置

  Dim MouseP As POINT

  '记录鼠标按下时的位置

  Dim MouseLButtonDown As Boolean

  '记录鼠标左键是否按下

  Private Sub Command1_Click()

   End '退出程序

  End Sub

  Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)

   FormP.X = Form1.Left

  '记下窗体原始坐标位置

   FormP.Y = Form1.Top

   MouseP.X = X

  '记下鼠标按下时的位置

   MouseP.Y = Y

   If Button = 1 Then

   MouseLButtonDown = True

  '鼠标左键按下

   End If

  End Sub

  Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)

   If MouseLButtonDown Then

   Form1.Left = FormP.X + (X - MouseP.X) '移动窗体

   Form1.Top = FormP.Y + (Y - MouseP.Y)

   End If

  End Sub

  Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)

   MouseLButtonDown = False

  '鼠标左键弹起

  End Sub

  上述方法不是很完善,制作出的窗体被拖动时,窗体会随鼠标的移动而移动。而在默认的Windows设置中拖动窗体时,被拖动的窗体不会随窗体的移动而移动,随窗体移动的仅是一个与窗体形状、大小一样的虚框,只有释放鼠标后,窗体才会移动到释放鼠标时虚框的所在处。要实现这种效果,请看第二种方法。

  方法二

  这种方法通过消息的发送实现移动无标题窗体。当鼠标按下、移动或释放时,将鼠标在窗体上按下的消息(消息值为HTCAPTION)发出,就可以拖动窗体了。代码如下:

  Private Declare Function ReleaseCapture Lib "user32" () As Long

  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,

  ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

  Private Const WM_NCLBUTTONDOWN = amp;amp;HA1

  Private Const HTCAPTION = 2

  '以上API函数和常数的声明可在VB自带的“API浏览器”中找到

  Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

   '在窗体的MouseDown事件中添加以下代码

   If Button = 1 Then

   Call ReleaseCapture

   Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)

   End If

  End Sub

  Private Sub Command1_Click()

  End  '退出程序

  End Sub

  这种方法实现起来比第一种方法更容易,只有几行代码,并且没有那么多的变量,窗体被拖动时与普通窗体一样,只有一个虚框随鼠标的移动而移动,当释放鼠标时窗体才移动到相应的位置。用到了两个API函数。

  以上程序在VB 6.0和Windows 98SE下调试通过。


关键字: VB 
您对这篇文章的看法是:    喜欢 反感 支持 反对 加油 鄙视 学习 打击 佩服 漂亮 路过 发表评论
1.您是否愿意通过eNet在线报名的方式,参加培训机构的培训?
是 
2.通过硅谷动力报名,您希望得到哪些优惠?
学费打折 赠送课时
3.报名后,您更愿意将培训费用:
通过eNet转交培训机构
直接交给培训机构
4.您在选择培训机构时,更注重:
培训机构名气  培训费用
5.您的年龄范围:
15~18岁  19~22岁
23岁以上
视频教程】 【专题汇总】 【不懂就问我关闭窗口

用Photoshop笔刷打造梦幻蝴蝶仙子
美不胜收 XP也用Vista七彩泡泡屏保
D.SPEED可爱的宇宙机器人设计欣赏
网络工程师必须掌握的44个路由知识
一周软件回顾 傲游软件易用性更强
相关文章
 本栏目最新文章
·编写电话拨号程序时一点小技巧
·VB开发应用软件之写在动手之前
·用VB实现“木马”式隐形运行程序
·怎样实现在VB窗体中有Html页面
·用VB编程实现图像的熠熠生辉效果
 精彩回放
·3DSMAX打造书本翻开效果
·共享上网技巧应用四则
·陪酒女浸泡在酒里的青春
·美女的性感靓丽婚纱设计
·妖冶身姿 死或生3壁纸
·剿灭Win XP下的29个烦恼
·黑客必备 NET命令大全
·用PS制作精致绝伦的红酒
 精彩推荐
 今日软件下载
汇聚精彩 清晰流畅
NETiTV
网络电视王中王
 往日推荐
·手工破解网吧多种限制
·Windows 网络管理技巧
·WMP 10使用技巧三则
·女孩问你帅不帅 要小心
·注册表优化XP 20招
·制作XP万能ghost光盘
·WMP10火拼DVD播放器
·街头霸王图片集中营
·五大搜索引擎横向评测
·防御计算机病毒十大步骤

论坛精华
·国外高手的调色合成 
·PS初学者十三课,献给 
·eNet学院史上最优秀 
·史上最强最多 photo 
·photoshop完美扣图教 
·PhotoShop实例精选电 
热点推荐
修复灰暗照片
浪漫婚纱照片
Flash视频编程
章子怡月历桌面
热点关注
·网站开发全程设计视频教程
·Photoshop CS3平面广告设计
·C++从入门到精通视频教程
·ASP.NET经典实例视频教程
·Flash8 Pro经典实例视频教程
·计算机等级考试二级VB上机
·eNet网络安全视频教程
·瑞星杀毒30元轻松用全年
·瑞星卡卡上网助手 正版免费
有女如莲 Photoshop手绘古典美女
往日推荐
网站重构设计
鹏哥C#教程
美女怀旧照片
网站开发
焦点关注