 |
关于这个问题,我有一个折中的办法,就是先使窗体无标题栏(无法移动),再自己加入一个“标题栏”(点击它拖动窗体),然后在这个“标题栏”的DragDrop或DragOver事件中加入代码使窗体关于DragDrop(DragOver)事件中的X,Y值进行移动,就可做到。这只是本人的意见,若有更好的方法请予以赐教!
贺海波的意见:
可以用API函数和计时器控件来解决这个问题,具体实例如下:
新建一个窗体,在上面加入一个计时器控件,设置其ENABELD属性为FLASE,INTERVAL属性为1。
新建一个模块,加入以下声明:
Option Explicit
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2
在计时器的TIMER事件中加入以下代码:
Private Sub Timer1_Timer()
ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
End Sub
在窗体的MOUSEMOVE事件中加入以下代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub
OK,就这么简单
此问题由Words Tenner回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 窗体与菜单, form, window, tform。
|