无标题栏窗体的移动

cupid3973 2005-06-04 08:48:24
在没有标题栏的窗体如何用鼠标直接拖动窗体来改变窗体的位置,该用什么办法?
另外如何制作出吸边效果(也就是当窗体移动接近桌面边缘时,自动靠拢窗口边缘).
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgvslch 2005-06-10
  • 打赏
  • 举报
回复
' 无标题栏的窗体的拖动问题
'在特殊窗体的应用中,我们有时需要把窗体的标题栏屏蔽掉,
'以窗体换上自己的外壳。是,当去掉了窗体标题栏后,移动窗体就成了一个问题。
'我们还是来看一下在VB6中的实现,VB6中实现(借助API函数SendMessage)
'在设计时将窗体的BorderStyle属性设置为0 -none
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "User32" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
If Button = 1 And WindowState = 0 Then
'Release capture
Call ReleaseCapture
'Send a 'left mouse button down on caption'-message to our form
SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub

Private Sub Form_Paint()
Me.Print ("Click on the form, hold the mouse button and drag it")
End Sub
Hotus 2005-06-10
  • 打赏
  • 举报
回复
拖动窗口很简单,吸边的效果网上到处都是
ljhdi 2005-06-04
  • 打赏
  • 举报
回复
'拖动窗体的API
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 Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'拖动窗体
If Button = 1 Then
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub

7,763

社区成员

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

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