在form中有borderstyle这个属性可选,而在MDI却没有这个选项。
还有用什么方法才能去除MDIform的最大和最小化的按钮,在FROM中有mixbotton和maxbotton这两个选项可以设,而在MDIFORM中却没有,我该怎么办呢?~~~

解决方案 »

  1.   

    '新建一个MDI窗体,把下面代码拷贝进去就行
    Dim form_W As Long, form_H As Long  '用来保存窗体最开始宽度与高度Private Sub MDIForm_Load()
     form_W = Me.Width
     form_H = Me.Height
    End SubPrivate Sub MDIForm_Resize()
     Me.Height = form_H
     Me.Width = form_W
    End Sub
      

  2.   

    从网上找的,可以使最大化按钮失效
        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_MAXIMIZE = &HF030
        Private Const MF_BYCOMMAND = &H0&
        Private Const WS_MAXIMIZEBOX = &H10000
        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 MDIForm_Load()
         Dim hMenu As Long, Success As Long
         
         hMenu = GetSystemMenu(hwnd, 0)
         Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
         Dim xl As Long
         
         Me.Show
         xl = GetWindowLong(hwnd, GWL_STYLE)
         xl = xl And (Not WS_MAXIMIZEBOX)
         SetWindowLong hwnd, GWL_STYLE, xl
        End Sub
      

  3.   

    '新建一个MDI窗体,把下面代码拷贝进去就行
    Dim form_W As Long, form_H As Long  '用来保存窗体最开始宽度与高度Private Sub MDIForm_Load()
     form_W = Me.Width
     form_H = Me.Height
    End SubPrivate Sub MDIForm_Resize()
     Me.Height = form_H
     Me.Width = form_W
    End Sub我试着把这段代码添加,不知道为什么运行时看不到窗体的大小,只显示最大化和最小化的还有关闭的
    按钮。
      

  4.   

    Private Sub MDIForm_Resize()
        If Me.WindowState <> 0 Then
            Me.WindowState = 0
        End If
    End Sub
      

  5.   

    我的意思就是想让MDIFORM和设计初一样,在运行时不让它最大化和最小化,因为我在MDIFORM上加了一个图片,图片大小是固定的~~
      

  6.   

    回复人: phlac(天下) ( ) 信誉:100  2005-05-28 22:08:00  得分: 0  
     
     
       从网上找的,可以使最大化按钮失效
        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_MAXIMIZE = &HF030
        Private Const MF_BYCOMMAND = &H0&
        Private Const WS_MAXIMIZEBOX = &H10000
        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 MDIForm_Load()
         Dim hMenu As Long, Success As Long
         
         hMenu = GetSystemMenu(hwnd, 0)
         Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
         Dim xl As Long
         
         Me.Show
         xl = GetWindowLong(hwnd, GWL_STYLE)
         xl = xl And (Not WS_MAXIMIZEBOX)
         SetWindowLong hwnd, GWL_STYLE, xl
        End Sub  
     
    呵呵,谢谢兄弟,你这个代码是可以用,不过好多地方看的不大懂比如第一句中的"user32"是什么意思?这个语句是不是自定义函数过程?
      

  7.   

    回复人: CPLiu(老了) ( ) 信誉:100  2005-05-29 09:38:00  得分: 0  
     
     
       Private Sub MDIForm_Resize()
        If Me.WindowState <> 0 Then
            Me.WindowState = 0
        End If
    End Sub  
     
    谢谢你!不过我要的不是这种效果~~不想中间有一个返回的过程~你的意思我是明白的。谢谢:)