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

本文介绍了一种简单的方法来实现在Visual Basic中拖动无标题窗体的功能。该方法利用了两个API函数ReleaseCapture和SendMessage,通过在MouseDown事件中响应鼠标左键按下并发送特定消息来实现窗体的拖动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 通过消息的发送实现移动无标题窗体。当鼠标按下、移动或释放时,将鼠标在窗体上按下的消息(消息值为HTCAPTION)发出,就可以拖动窗体了。代码如下:
  2.   PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong
  3.   PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,
  4.   ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
  5.   PrivateConstWM_NCLBUTTONDOWN=&&HA1
  6.   PrivateConstHTCAPTION=2
  7.   '以上API函数和常数的声明可在VB自带的“API浏览器”中找到
  8.   PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
  9.    '在窗体的MouseDown事件中添加以下代码
  10.    IfButton=1Then
  11.    CallReleaseCapture
  12.    CallSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0)
  13.    EndIf
  14.   EndSub
  15.   PrivateSubCommand1_Click()
  16.   End  '退出程序
  17.   EndSub
  18.   这种方法实现起来比第一种方法更容易,只有几行代码,并且没有那么多的变量,窗体被拖动时与普通窗体一样,只有一个虚框随鼠标的移动而移动,当释放鼠标时窗体才移动到相应的位置。用到了两个API函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值