• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
窗体迁移大法
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
窗体迁移大法
软件发布 窗体迁移大法
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 编程技术 >> VB & VB.NET教程 >> 窗体迁移大法

窗体迁移大法

添加时间: 2006-2-13 9:29:19  作者: VB教程  阅读次数:56   来源: http://www.d9soft.com

       
  有很多软件为了实现特殊的显示效果,采用非矩形的窗体,而这些窗体往往没有标题栏。想要移动一个没有标题栏的窗口是不那么容易的。下面我介绍两种在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 = &&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开发即时战略游戏 下一篇文章: 让VB应用程序支持鼠标滚轮

相关文章:

  • NET 拖动无边框窗体编程实例
  • 从Oracle迁移到SQLServer的陷阱
  • 迁移至64位SQLServer2005
  • 潮流之选:RMVB电影外挂字幕大法
  • ACCESS数据库向MySQL快速迁移小程序(二)

相关软件:

  • IE冲浪大法官 V1.0.0.0
  • 窗体属性修改专家 2008 中秋特别版
  • 模拟Vista透明窗体 V1.6 绿色版
  • ajxpform窗体换肤控件 V2.0
  • 窗体监控器 V1.2
  • 淘宝店铺迁移总管 V2007.06.11 安装版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • VB.net2008创建发送与接收端程序
  • C++程序设计之四书五经
  • VB入门教程之四
  • VB入门教程之三
  • VB入门教程之二
  • VB入门教程之一
  • 压缩被DBGIRD控件正在使用的MDB数...
  • 谈谈VB的数据库编程方式
  • 在VB中用DAO实现数据库编程
  • Data控件使用有密码的Access数据库

VB & VB.NET教程阅读排行

  • VB入门教程之一
  • VB入门教程之二
  • VB入门教程之三
  • VB入门教程之四
  • 如何编写高质量的VB代码
  • 初学者必知:VB10个小编程
  • VB访问SQL Server数据库技术全揭密
  • 怎样在VB中控制Word?
  • 用DAO或ADO正确访问Access 2000
  • VB中列表框的使用技巧说明

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • VC++之List Box/Check List Box控...
  • 第二章 PowerBuilder 入门之创建新...
  • VC++ List Ctrl控件
  • 第一章 什么是PowerBuilder
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有