有个问题求大家!!!

zjf405 2005-09-22 12:14:01
我想做个窗体,用鼠标点击窗体部分并按住就能拖动窗体移动,而不需要按窗体的标题栏来拖动。
这个功能怎么实现?代码怎么写呢?谢谢达人帮忙解决!
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2005-09-22
  • 打赏
  • 举报
回复
http://61.186.252.131/Expert/topic/1793/1793218.xml?temp=.4484827
faysky2 2005-09-22
  • 打赏
  • 举报
回复
楼上的正解 先用RealeaseCapture释放鼠标 然后SendMessage
fishzone 2005-09-22
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Call ReleaseCapture
Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End If
End Sub

放在任何控件或者窗体的mousedown中就可以
zjf405 2005-09-22
  • 打赏
  • 举报
回复
谢谢csdngoodnight解答,东西已经做出来了!我觉得这里面最难搞的就是鼠标移动如何实现与窗体移动的同步,并且它们不发生相对移动。
不过 me.move me.left+x-ix,me.top+y-iy 这行代码现在还是有点不太理解,其中的ix和iy这两个量应该是不变的,它们是鼠标刚点击窗体时在窗体里的坐标,而me.left、me.top、x、y这四个量是一直在变化的,那怎么上面的那行代码就实现了鼠标与窗体没有发生相对移动呢?小生刚学VB不到一个月,还望大虾讲清楚啊,谢谢老~~
csdngoodnight 2005-09-22
  • 打赏
  • 举报
回复
dim b as Boolean
dim ix as integer,iy as integer

sub form_mousedown(button As .....)
b=ture
ix=x
iy =y
end sub

sub form1_mousemove(.......)
if not b then exit sub
me.move me.left+x-ix,me.top+y-iy
end sub

sub form1_mouseup(........)
b=0
end sub

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧