网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.VB程序实现XP效果的界面.
.VisualBasic使用技巧.
.用VisualBasic设计窗体背景花纹.
.怎样限制鼠标移动.
.Unicode与Ansi.
.VB编程步步高-表单篇.
.使用Cleanup方法避免循环引用.
.VB中远程数据库的访问(1)-数据.
.DirectX7.0使用心得(2).
.打开文本文件各种方法.
.用CELL组件显示Access数据库的图.
.用CallByName函数实现字符动画.
.在程序中打开Internet拨号连接窗.
.SQL的基本操作(2.数据库的相关操.
.用VB自制屏幕保护程序.
.用Winsock实现点对点通信.
.VB中使用DDE技术为应用程序增辉.
.多用户应用程序中应注意的其它问.
.在VB中设计倒计时程序.
.图像在图片框中的滚动.

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

发表日期:2006-2-27


方法一


  这种方法是在窗体的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下调试通过。->

上一篇:VB中注册控件的三种简单方法 人气:4030
下一篇:文本框的使用说明与技巧 人气:3641
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐