请问如何使MDIForm的最大最小化等功能不可用(注同时必须将用鼠标右键点击主题栏时弹出的快捷菜单中的最大最小化菜单项也禁用或删除),且使MDIForm窗体的大小不能手动调整,请问如何实现,谢谢!!

解决方案 »

  1.   

    我说的是MDIForm,不是一般的Form.
      

  2.   

    用API函数使MDIForm窗口的标题栏隐藏就行了'使MDI窗体标题栏隐藏
    Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByValdwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)
    Private Const WS_CAPTION = &HC00000
    Private Const WS_SYSMENU = &H80000'用于使窗口标题栏隐藏
        Dim lStyle As Long
        lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
        lStyle = lStyle Xor WS_CAPTION
        Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
      

  3.   

    Private Const WS_THICKFRAME = &H40000 
        Private Const GWL_EXSTYLE = (-20) 
        Private Const GWL_STYLE = (-16) 
        Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ 
         (ByVal hwnd As Long, _ 
         ByVal nIndex As Long, _ 
         ByVal dwNewLong As Long) As Long 
        Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ 
         (ByVal hwnd As Long, _ 
         ByVal nIndex As Long) As Long 
         
        Private Sub Form_Load() 
         Dim xl As Long 
         
         Me.Show 
         Debug.Print Hex(Not WS_THICKFRAME) 
         xl = GetWindowLong(Form1.hwnd, GWL_STYLE) 
         xl = xl And (Not WS_THICKFRAME) 
         SetWindowLong Form1.hwnd, GWL_STYLE, xl 
        End Sub 
      

  4.   

    左上角菜单称作系统菜单或控制菜单。如果你设置Form的ControlBox属性为False,则系统菜单就不显示了,当然最大化、最小化按钮也没有了。如果你希望修改系统菜单,可以利用API函数GetSystemMenu得到菜单句柄,再用其它API函数修改菜单。
      

  5.   

    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long 
         Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long 
         Private Const SC_SIZE = &HF000 
         Private Const MF_BYCOMMAND = &H0& 
         
        Private Sub Form_Load() 
         Dim hMenu As Long, Success As Long 
         
         hMenu = GetSystemMenu(Form1.hwnd, 0) 
         Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND) 
        End Sub 
      

  6.   

    Private Const WS_THICKFRAME = &H40000 
        Private Const GWL_EXSTYLE = (-20) 
        Private Const GWL_STYLE = (-16) 
        Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ 
         (ByVal hwnd As Long, _ 
         ByVal nIndex As Long, _ 
         ByVal dwNewLong As Long) As Long 
        Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ 
         (ByVal hwnd As Long, _ 
         ByVal nIndex As Long) As Long 
         
        Private Sub Form_Load() 
         Dim xl As Long 
         
         Me.Show 
         Debug.Print Hex(Not WS_THICKFRAME) 
         xl = GetWindowLong(Form1.hwnd, GWL_STYLE) 
         xl = xl And (Not WS_THICKFRAME) 
         SetWindowLong Form1.hwnd, GWL_STYLE, xl 
        End Sub