如何屏蔽MDI标题栏中的最小化、最大化及关闭等按钮?

解决方案 »

  1.   

    Option Explicit
    Private Declare Function GetSystemMenu Lib "USER32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function RemoveMenu Lib "USER32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Private Const MF_BYCOMMAND = &H0&
    Private Const SC_CLOSE = &HF060&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, ByVal dwNewLong As Long) As Long
    Private Const GWL_STYLE = (-16)
    Private Const WS_MAXIMIZEBOX = &H10000
    Private Const WS_MINIMIZEBOX = &H20000Private Sub MDIForm_Load()
        Dim MyMenu As Long
        MyMenu = GetSystemMenu(Me.hwnd, 0)  '得到系统菜单的句柄,Me.hwnd表示当前窗体的句柄
        RemoveMenu MyMenu, SC_CLOSE, MF_BYCOMMAND  '屏蔽关闭按钮
        
         '下面代码屏蔽最大最小化按钮
        Dim mdiWnd As Long
        mdiWnd = GetWindowLong(Me.hwnd, GWL_STYLE)    mdiWnd = mdiWnd And Not (WS_MAXIMIZEBOX) And Not (WS_MINIMIZEBOX)    mdiWnd = SetWindowLong(Me.hwnd, GWL_STYLE, mdiWnd)
    End Sub
      

  2.   

    UP,
    faysky2() 放过好几次了,呵呵 !!