在VB中实现移动没有标题栏的窗口

2016-02-19 14:24 76 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐在VB中实现移动没有标题栏的窗口,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

方法一
  
  
  这种方法是在窗体的MouseDown、MouseUp和MouseMove等事件的处理过程中添加代码,实现在鼠标左键按下后移动时,改变窗体的Left和Top属性,实现移动无标题栏的窗体。
  
  进入VB,把窗体Form1的BorderStyle属性设置为0-None(无标题栏),再窗体上添加一个ButtonCommand组件,用来关闭程序。代码如下:
  
  PrivateTypePOINT
  
   XAsSingle
  
   YAsSingle
  
  EndType
  
  DimFormPAsPOINT
  
  '记录窗体原始位置
  
  DimMousePAsPOINT
  
  '记录鼠标按下时的位置
  
  DimMouseLButtonDownAsBoolean
  
  '记录鼠标左键是否按下
  
  PrivateSubCommand1_Click()
  
   End'退出程序
  
  EndSub
  
  PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  
   FormP.X=Form1.Left
  
  '记下窗体原始坐标位置
  
   FormP.Y=Form1.Top
  
   MouseP.X=X
  
  '记下鼠标按下时的位置
  
   MouseP.Y=Y
  
   IfButton=1Then
  
   MouseLButtonDown=True
  
  '鼠标左键按下
  
   EndIf
  
  EndSub
  
  PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  
   IfMouseLButtonDownThen
  
   Form1.Left=FormP.X (X-MouseP.X)'移动窗体
  
   Form1.Top=FormP.Y (Y-MouseP.Y)
  
   EndIf
  
  EndSub
  
  PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  
   MouseLButtonDown=False
  
  '鼠标左键弹起
  
  EndSub
  
  上述方法不是很完善,制作出的窗体被拖动时,窗体会随鼠标的移动而移动。而在默认的Windows设置中拖动窗体时,被拖动的窗体不会随窗体的移动而移动,随窗体移动的仅是一个与窗体形状、大小一样的虚框,只有释放鼠标后,窗体才会移动到释放鼠标时虚框的所在处。要实现这种效果,请看第二种方法。
  
  方法二
  
  这种方法通过消息的发送实现移动无标题窗体。当鼠标按下、移动或释放时,将鼠标在窗体上按下的消息(消息值为HTCAPTION)发出,就可以拖动窗体了。代码如下:
  
  PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong
  
  PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,
  
  ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
  
  PrivateConstWM_NCLBUTTONDOWN=&&HA1
  
  PrivateConstHTCAPTION=2
  
  '以上API函数和常数的声明可在VB自带的“API浏览器”中找到
  
  PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  
   '在窗体的MouseDown事件中添加以下代码
  
   IfButton=1Then
  
   CallReleaseCapture
  
   CallSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0)
  
   EndIf
  
  EndSub
  
  PrivateSubCommand1_Click()
  
  End  '退出程序
  
  EndSub
  
  这种方法实现起来比第一种方法更容易,只有几行代码,并且没有那么多的变量,窗体被拖动时与普通窗体一样,只有一个虚框随鼠标的移动而移动,当释放鼠标时窗体才移动到相应的位置。用到了两个API函数。
  
  以上程序在VB6.0和Windows98SE下调试通过。->

来源:https://www.tulaoshi.com/n/20160219/1606901.html

延伸阅读
标签: excel
excel中如何固定标题栏?   方法/步骤 1用EXCEL打开我们的目标文件,如图 2用鼠标 点击下我们要固定标题栏下面一行最左边那个单元格,如图 3点菜单栏的窗口按钮,然后选择冻结窗口,如图 4然后我们用鼠标滚轮伤心翻页,看标题是不固定不动 Excel2013中添加了数据有效性后该如何清除   ①打开有...
标签: Web开发
实现跑马灯的方法很多,本文详细介绍JavaScript/JS实现标题栏跑马灯。 将下代码copy入你网页的和中的合适地方即可。 以下是引用片段: SCRIPT LANGUAGE=JAVASCRIPT !-- var msg = "让我们做得更好"; var speed = 300; var msgud = " " + msg; function titleScroll() { if (msgud.length msgud = msgud.substring(1, msgud.le...
标签: autocad教程
本文简单介绍在中望AutoCAD里绘制自己单位的标题栏以及如何将设置好的标题与大家分享。 我们绘图时经常会用到各式各样的图框,图框的标题栏上往往有单位的名称等信息。如果每次画图都要绘制或修改别人的图框,这个过程既繁琐又浪费时间,何不做个自己单位的标题栏呢? 首先要清楚这个标题栏的规格。长宽多少,适用于几号图纸,以...
一、隐藏标题栏 代码如下:         //隐藏标题栏        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 二、隐藏状态栏 代码如下:         //隐藏状态栏        this.getWindow()....
标签: 浏览器
360浏览器怎么设置在标题栏显示网页标题   1、打开360浏览器 2、点击右上方的工具 3、然后点击最下方的选项进入 4、选择高级设置 5、找到在标题页显示网页标题并勾选 6、这样您的360浏览器标题栏就会显示网页标题了

经验教程

259

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部