窗体迁移大法
时间:2009-6-2 10:27:47 作者: 来源:
 
有很多软件为了实现特殊的显示效果,采用非矩形的窗体,而这些窗体往往没有标题栏。想要移动一个没有标题栏的窗口是不那么容易的。下面我介绍两种在vb中采取不同原理的方法移动一个没有标题栏的窗口。

  方法一

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

->


上一篇:
下一篇:
 
网页模板 网站模板 网站建设 网页设计 网页设计师兼职 自助建站 ...
网站魔坊,网页模板,网站模板,免费网页模板,在线模板设计,免费建站,门户网站搭建,建站,企业网站,奇思网络,奇思,智能建站,自助建站,拖动建站,网站建设,网页设计,在线设计模板
www.wzmof.com/ 47K 2009-5-21
 
商巢...
商巢是一个真实的商业交友社区、为用户提供交友、贸易、社区、建站等服务;临渊慕鱼,不如退而结网!商巢结网行动
www.ncooo.com/ 47K 2009-5-21
 
商巢创业 门户创业 商人网络家园 魔坊建站 商业交友
商巢下的门户,门户又一独立实体与商巢合作,由商巢负责技术的更新以及硬件的支持,门户负责自己领域的市场推广以及相应的售后服务即可。 打破以往门户需要源源不断的技术、硬件投入模式,盈利模式清晰 行业门户以及门户下企业网站由网站魔坊...
mhcy.ncooo.com/ 36K 2009-5-14
 
奇思网络技术 网站建设 深圳网站建设
中小外贸企业做电子商务,需要从两点技术突围 08-01 企业网站建设 提供网站策划、网站建设、数据库开发至网络营销全套解决方案。能针对客户所处行业,结合营销特征量身订做高质量网站建设方案。 网站推广 怎样使网站的投资得到回报?这需要经验...
www.qsnet.com.cn/ 48K 2009-4-2
 
深圳艺术网
深圳艺术网,中国艺术网,中国当代艺术网,广东当代艺术网,广东艺术网,南方当代艺术网,深圳美术网,深港美术网,深港艺术网,深港当代艺术网,杜应红,深圳当代艺术创作库,深圳创库,深圳美术,深圳艺术,深圳收藏,深圳艺术收藏,深圳音乐网,深圳舞蹈...
www.szarts.cn/ 119K 2009-6-9
 
网页设计也通过人脉赚钱-技术传播
 
网页设计114 -打造中国网页设计、网站建设技术信息学习、交流、互动平台
                         打造网页设计师兼职创业平台中心