有一个工具箱这样的子窗体,永远在最前,可以关闭也可以调整大小,
其他子窗体最大化的时候只占用该窗体外的其他部分。

解决方案 »

  1.   

    borderstyle=5然后用setwindowpos把窗口设为topmost
      

  2.   

    可是setwindowpos对mdi子窗体设置topmost无效
      

  3.   

    daisy8675(莫依) 也来这招,老大姐这样搞不好吧!
      

  4.   

    你让其它窗体在变换大小时始终控制不超过该窗体的空间
    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
    代码仅供参考,是我程序中的一段控制窗体间大小的代码
      

  5.   

    可以找找我在VBgood中似乎见过
      

  6.   

    奇怪,那你为何不用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