界面:至少需要最小,关闭按钮
我用了这个函数来实现,但不行,大家帮忙看看Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPublic Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2Public Const HWND_NOTOPMOST = -2
Public Sub SetFormNoSize(ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, cx As Long, cy As Long)
    Dim rc  As Long
    
    rc = SetWindowPos(hwnd, -1, x, y, cx, cy, SWP_NOMOVE Or SWP_NOSIZE)
    
End Sub

解决方案 »

  1.   

    你要是要窗体的最小和关闭按钮, 
    也就是说不要最大化按钮了,
    在窗体的属性中设置maxbutton=false就可以了.
      

  2.   

    你在resize里面加上语句,当它改变大小得时候自动变为你指定得大小,在定义一个布尔型得数据用来表示最小化,如果最小化就退出resize
      

  3.   

    把 lminw lmaxw 设置为相同,lminh lmaxh 设置为相同, 窗体大小就不能改变了。Private lminw As Long  '最小宽度
    Private lminh As Long  '最小高度
    Private lmaxw As Long  '最大宽度
    Private lmaxh As Long  '最小高度  Private Declare Function SetWindowLong& Lib "user32" _
          Alias "SetWindowLongA" (ByVal hwnd&, ByVal nIndex&, _
          ByVal dwNewLong&)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 LongDeclare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_GETMINMAXINFO = &H24
    '==================================================
    '回调
    Function WinProc&(ByVal hwnd&, ByVal wMsg&, _
                      ByVal wParam&, ByVal lParam&)
                      
        Select Case wMsg&
            Case WM_GETMINMAXINFO
                Dim MinMax As MINMAXINFO
                
                CopyMemory MinMax, ByVal lParam, Len(MinMax)
                
                MinMax.ptMinTrackSize.x = lminw
                MinMax.ptMinTrackSize.y = lminh
                MinMax.ptMaxTrackSize.x = lmaxw
                MinMax.ptMaxTrackSize.y = lmaxh
                
                CopyMemory ByVal lParam, MinMax, Len(MinMax)
                
                WinProc& = 1
                Exit Function
        End Select
        
        WinProc& = CallWindowProc(OldProc, hwnd, wMsg, wParam, lParam)
    End Function
    '==================================================
    '==================================================
    '挂钩
    Sub Hook(ByVal nhWnd&, minw As Long, minh As Long, maxw As Long, maxh As Long)    If OldProc <> 0 Then Exit Sub
        
        mhWnd& = nhWnd&
        
        lminw = minw
        lminh = minh
        lmaxw = maxw
        lmaxh = maxh
        
        
        OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub
    '==================================================
    '==================================================
    '脱钩
    Sub UnHook()    If OldProc = 0 Then Exit Sub    SetWindowLong mhWnd, GWL_WNDPROC, OldProc
        OldProc = 0
    End Sub
    '==================================================
      

  4.   

    忘了个变量
    Dim OldProc&放在前面
      

  5.   

    还有一个。。Type MINMAXINFO
            ptReserved As POINTAPI
            ptMaxSize As POINTAPI
            ptMaxPosition As POINTAPI
            ptMinTrackSize As POINTAPI
            ptMaxTrackSize As POINTAPI
    End Type