热情软件屋

 

如何能控制MDIForm的最大化,最小化


编号:QA003376
建立日期: 2000年10月6日 最后修改日期:2001年9月2日
所属类别:

甘鸣春:
    操作系统: win98oem2
    编程工具: vb6.0
    问题: 如何能控制MDIForm的最大化,最小化(如使maxbutton无效)?

回答:

    你可以在Resize事件中知道窗口被最大化、最小化(参考QA001547 "当最小化一个窗体时,其他的窗体也随着最小化")。
    你也可以使用下面的代码禁止对MDI窗体最大化:
    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
    
    WJH_CJ的意见:
    Private Sub MDIForm_Resize()
     Select Case Me.WindowState
     Case vbMaximized
     If WindowState = 2 Then WindowState = 0'是最大化失效
    
     Case vbMinimized
     Case Else'限制窗体大小
     If Me.Width <> 12000 Then Me.Width = 12000
     Me.Height = 9000 - StatusBar1.Height
     End Select
    End Sub

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio