在VB中实现移动没有标题栏的窗口
2018-06-17 17:10:18来源:未知 阅读 ()
这种方法是在窗体的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下调试通过。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:VB6制作Win98风格的工具栏
下一篇:用VB编写FLASH动画播放器
- 利用VisualBasic实现木马攻击 2018-06-17
- VB中实现图像特技(2) 2018-06-17
- 如何用VB在窗体中实现闪烁文字 2018-06-17
- MoveMethod速度较快 2018-06-17
- 用InStr函数实现代码减肥 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash