如何让窗体保持在设计时的尺寸!

解决方案 »

  1.   

    你是说子窗体吗?在Form_load 中直接对窗体的大小赋值
      

  2.   

    设置窗体的borderstyle为:1,再设置那个minbutton为true
      

  3.   

    最简单的设置窗体的borderstyle为1,如果你想保留最小化按钮,那么可用下面的代码:
    模块中
    Public defWindowProc As Long
    Public minX As Long
    Public minY As Long
    Public maxX As Long
    Public maxY As Long
    Public Const GWL_WNDPROC As Long = (-4)
    Public Const WM_GETMINMAXINFO As Long = &H24
    Public Type POINTAPI
        x As Long
        y As Long
    End Type
    Type MINMAXINFO
        ptReserved As POINTAPI
        ptMaxSize As POINTAPI
        ptMaxPosition As POINTAPI
        ptMinTrackSize As POINTAPI
        ptMaxTrackSize As POINTAPI
    End Type
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Public Sub SubClass(hWnd As Long)
    On Error Resume Next
    defWindowProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
       End Sub
    Public Sub UnSubClass(hWnd As Long)
     If defWindowProc Then
          SetWindowLong hWnd, GWL_WNDPROC, defWindowProc
          defWindowProc = 0
       End If
       End Sub
    Public Function WindowProc(ByVal hWnd As Long, _
                               ByVal uMsg As Long, _
                               ByVal wParam As Long, _
                               ByVal lParam As Long) As Long   On Error Resume Next
    Select Case hWnd
          Case frmmain.hWnd
             Select Case uMsg
                Case WM_GETMINMAXINFO
                      Dim MMI As MINMAXINFO
                      CopyMemory MMI, ByVal lParam, LenB(MMI)
                       With MMI
                          .ptMinTrackSize.x = minX
                          .ptMinTrackSize.y = minY
                          .ptMaxTrackSize.x = maxX
                          .ptMaxTrackSize.y = maxY
                      End With
                      CopyMemory ByVal lParam, MMI, LenB(MMI)
                      WindowProc = 0
                        
                  Case Else
                       WindowProc = CallWindowProc(defWindowProc, hWnd, uMsg, wParam, lParam)
              End Select
       End Select
    End Function
    窗体中
    Option Explicit
    Private StartupHeight As Long
    Private StartupWidth As Long
    Private TwipsX As Integer
    Private TwipsY As Integer
    Private Sub Form_Load()
       TwipsX = Screen.TwipsPerPixelX
       TwipsY = Screen.TwipsPerPixelY
       StartupWidth = Me.Width \ TwipsX
       StartupHeight = Me.Height \ TwipsY
        Call SubClass(frmmain.hWnd)
             minX = Me.Width \ TwipsX
             minY = Me.Height \ TwipsY
             maxX = Me.Width \ TwipsX
             maxY = Me.Height \ TwipsY
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
     Call UnSubClass(Me.hWnd)
    End Sub
      

  4.   

    Dim WidthX As Long, HeightX As LongPrivate Sub Form_Load()
    WidthX = Me.Width
    HeightX = Me.Height
    End SubPrivate Sub Form_Resize()
    Me.Width = WidthX
    Me.Height = HeightX
    End Sub
    呵呵,这是一个....土方法,也是行的另外,窗体可以设置....不允许改变大小的属性