我创建一个mdi窗体,可以它没有maxbotton属性,请问各位高人,怎么样屏蔽最大化和还原图标?我的程序一开始就是最大化界面,我不允许人家修改窗体大小,但是可以最小化窗体!

解决方案 »

  1.   

    它怎么会"没有maxbotton属性" ???你要的是父窗体还是自窗体的屏蔽?
      

  2.   

    没有maxbotton属性?那是什么样的vb,仔细找找吧。
    windowstate属性控制窗体运行时的状态。
      

  3.   

    不可能没有maxbotton属性的,完全可以通过这个属性更改的!
    至于不让用户改动窗体大小,则可以更改窗窗体的类型,默认值是2,把它改为1就行了!好像是bodysyle属性吧!
      

  4.   

    我说的是mdi窗体,你们去看看它没有maxbotton属性和bodysyle属性,我设置窗体启动后就是最大化,我不允许人家改动窗体大小,所以我就需要把窗体上的最大化和还原图标屏蔽,但是窗体可以最小化!
    我要怎么做!
      

  5.   

    我的程序就一个窗体,即mdi窗体
      

  6.   

    我的程序就一个窗体,即mdiform窗体
      

  7.   

    哦,原来就是一个父窗体啊.我早就写过类似的东西了,还是屏蔽子窗体的呢,代码一样的,你自己看吧:http://expert.csdn.net/Expert/topic/1512/1512873.xml?temp=.9933283
      

  8.   

    楼主啊,根据你的要求,我给你简化了一下,自己看吧:=======================
    '''新建一个 MDI 窗体,COPY 下面的代码:
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Const MF_BYPOSITION = &H400&
    Const MF_REMOVE = &H1000&Private Sub MDIForm_Load()
        Me.WindowState = 2
        Dim hSysMenu As Long, nCnt As Long
        hSysMenu = GetSystemMenu(Me.hwnd, False)
        If hSysMenu Then
            nCnt = GetMenuItemCount(hSysMenu)
            If nCnt Then
                RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE
                DrawMenuBar Me.hwnd
            End If
        End If
        
        prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
        SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
    End SubPrivate Sub MDIForm_Unload(Cancel As Integer)
        SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
    End Sub
    ''''新建一个模块,COPY 下面的代码:
    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
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const GWL_WNDPROC = (-4)
    Public Const WM_NCLBUTTONDBLCLK = &HA3Public prevWndProc As LongPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    On Error GoTo ShowErr    If Msg = WM_NCLBUTTONDBLCLK Then
            Exit Function
        End If
        WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
        Exit Function
    ShowErr:
        WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
        Exit Function
    End Function