在一个Form中,怎样用鼠标移动一个按钮?

rushing 2006-09-11 05:47:50
在一个Form中,只有一个按钮控件cmdMove。

想用鼠标拖着这个按钮移动,但是效果很不好。发现.Left 和 X 的单位不一致。

代码如下:


Dim MouseDown As Boolean

Private Sub cmdMove_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then MouseDown = True
End Sub

Private Sub cmdMove_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MouseDown Then
If X > 0 And X < Me.ScaleWidth Then

cmdMove.Left = X

End If
End If
End Sub

Private Sub cmdMove_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseDown = False
End Sub
...全文
339 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DengXingJie 2006-09-11
  • 打赏
  • 举报
回复
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 HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1

Private Sub cmdMove_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage cmdMove.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub
EverySoft 2006-09-11
  • 打赏
  • 举报
回复
还用什么API呀,我写了一下
Dim MouseDown As Boolean
Dim OldX As Integer

Private Sub cmdMove_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
MouseDown = True
OldX = X
End If
End Sub

Private Sub cmdMove_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MouseDown Then
If X > 0 And X < Me.ScaleWidth Then

cmdMove.Left = Me.cmdMove.Left + (X - OldX)

End If
End If
End Sub

Private Sub cmdMove_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseDown = False
End Sub

rushing 2006-09-11
  • 打赏
  • 举报
回复
我知道了,应该是Form的MouseMove事件。不应用按钮的MouseMove事件。
哪里有滑动条的代码呢?
Hassle 2006-09-11
  • 打赏
  • 举报
回复
参考一下(API)

先ClientToScreen
后ScreenToClient

7,785

社区成员

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

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