你让其它窗体在变换大小时始终控制不超过该窗体的空间 Private Sub Form_Resize() If Me.WindowState <> vbMinimized And MDIFrmMain.WindowState <> vbMinimized Then If Me.ScaleHeight < 2000 Or Me.ScaleWidth < 5000 Then MsgBox "不能太小了吧!", vbOKOnly + vbInformation, "提示" Me.Width = 7700 Me.Height = 6500 Picture1.Top = Me.Height Exit Sub End If MSHFlexGrid1.Width = Me.ScaleWidth MSHFlexGrid1.Height = Me.ScaleHeight - Picture1.Height End If End Sub 代码仅供参考,是我程序中的一段控制窗体间大小的代码
可以找找我在VBgood中似乎见过
奇怪,那你为何不用MDI窗口,在MDI窗口中加一个PICTUREBOX控件,就可以达到这样的效果,运行时调整PICTUREBOX大小的程序如下:Option ExplicitPrivate Const HTLEFT = 10 Private Const HTRIGHT = 11 Private Const HTTOP = 12 Private Const HTBOTTOM = 15 Private Const HTTOPLEFT = 13 Private Const HTTOPRIGHT = 14 Private Const HTBOTTOMLEFT = 16 Private Const HTBOTTOMRIGHT = 17Private 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 LongPrivate Sub Form_Load() Picture1.ScaleMode = vbPixels End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) PicSize X, Y '改变画布大小 End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseDraw X, Y End Sub '改变鼠标形状 Private Sub MouseDraw(X As Single, Y As Single) With Picture1 '如果鼠标在绘图框内 If X > 4 And X < .ScaleWidth - 4 And Y > 4 And Y < .ScaleHeight - 4 Then
Else '如果鼠标在绘图框的四周边缘 If (X > 0 And X < 3) Or (X > .ScaleWidth - 3 And X < .ScaleWidth) Then .MousePointer = vbSizeWE End If If (Y > 0 And Y < 3) Or (Y > .ScaleHeight - 3 And Y < .ScaleHeight) Then .MousePointer = vbSizeNS End If If X > 0 And X < 4 And Y > 0 And Y < 4 Then .MousePointer = vbSizeNWSE End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > 0 And Y < 4 Then .MousePointer = vbSizeNESW End If If X > 0 And X < 4 And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then .MousePointer = vbSizeNESW End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then .MousePointer = vbSizeNWSE End If End If End With End SubPrivate Sub PicSize(X As Single, Y As Single) '改变画布的大小+++++++++++++++ Dim nParam As Long With Picture1 If X > 0 And X < 3 Then nParam = HTLEFT End If If X > .ScaleWidth - 3 And X < .ScaleWidth Then nParam = HTRIGHT End If If Y > 0 And Y < 3 Then nParam = HTTOP End If If Y > .ScaleHeight - 4 And Y < .ScaleHeight Then nParam = HTBOTTOM End If If X > 0 And X < 4 And Y > 0 And Y < 4 Then nParam = HTTOPLEFT End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > 0 And Y < 4 Then nParam = HTTOPRIGHT End If If X > 0 And X < 4 And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then nParam = HTBOTTOMLEFT End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then nParam = HTBOTTOMRIGHT End If If nParam Then ReleaseCapture SendMessage .hwnd, &HA1, nParam, 0 'Tbs.Buttons(1).Value = tbrPressed 'Flag = False End If End With End Sub
Private Sub Form_Resize()
If Me.WindowState <> vbMinimized And MDIFrmMain.WindowState <> vbMinimized Then
If Me.ScaleHeight < 2000 Or Me.ScaleWidth < 5000 Then
MsgBox "不能太小了吧!", vbOKOnly + vbInformation, "提示"
Me.Width = 7700
Me.Height = 6500
Picture1.Top = Me.Height
Exit Sub
End If
MSHFlexGrid1.Width = Me.ScaleWidth
MSHFlexGrid1.Height = Me.ScaleHeight - Picture1.Height
End If
End Sub
代码仅供参考,是我程序中的一段控制窗体间大小的代码
Private Const HTRIGHT = 11
Private Const HTTOP = 12
Private Const HTBOTTOM = 15
Private Const HTTOPLEFT = 13
Private Const HTTOPRIGHT = 14
Private Const HTBOTTOMLEFT = 16
Private Const HTBOTTOMRIGHT = 17Private 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 LongPrivate Sub Form_Load()
Picture1.ScaleMode = vbPixels
End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
PicSize X, Y '改变画布大小
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseDraw X, Y
End Sub
'改变鼠标形状
Private Sub MouseDraw(X As Single, Y As Single)
With Picture1
'如果鼠标在绘图框内
If X > 4 And X < .ScaleWidth - 4 And Y > 4 And Y < .ScaleHeight - 4 Then
Else '如果鼠标在绘图框的四周边缘
If (X > 0 And X < 3) Or (X > .ScaleWidth - 3 And X < .ScaleWidth) Then
.MousePointer = vbSizeWE
End If If (Y > 0 And Y < 3) Or (Y > .ScaleHeight - 3 And Y < .ScaleHeight) Then
.MousePointer = vbSizeNS
End If If X > 0 And X < 4 And Y > 0 And Y < 4 Then
.MousePointer = vbSizeNWSE
End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > 0 And Y < 4 Then
.MousePointer = vbSizeNESW
End If If X > 0 And X < 4 And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then
.MousePointer = vbSizeNESW
End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then
.MousePointer = vbSizeNWSE
End If
End If
End With
End SubPrivate Sub PicSize(X As Single, Y As Single)
'改变画布的大小+++++++++++++++
Dim nParam As Long With Picture1
If X > 0 And X < 3 Then
nParam = HTLEFT
End If If X > .ScaleWidth - 3 And X < .ScaleWidth Then
nParam = HTRIGHT
End If If Y > 0 And Y < 3 Then
nParam = HTTOP
End If If Y > .ScaleHeight - 4 And Y < .ScaleHeight Then
nParam = HTBOTTOM
End If If X > 0 And X < 4 And Y > 0 And Y < 4 Then
nParam = HTTOPLEFT
End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > 0 And Y < 4 Then
nParam = HTTOPRIGHT
End If If X > 0 And X < 4 And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then
nParam = HTBOTTOMLEFT
End If If X > .ScaleWidth - 4 And X < .ScaleWidth And Y > .ScaleHeight - 4 And Y < .ScaleHeight Then
nParam = HTBOTTOMRIGHT
End If If nParam Then
ReleaseCapture
SendMessage .hwnd, &HA1, nParam, 0 'Tbs.Buttons(1).Value = tbrPressed
'Flag = False
End If
End With
End Sub