在form中我想象maxbutton一样使关闭按钮失效,该怎么办

解决方案 »

  1.   


    Public Const SW_HIDE = 0
    Public Const SW_SHOWNORMAL = 1Public Const SWP_HIDEWINDOW = &H80
    Public Const SWP_SHOWWINDOW = &H40
    Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wflags As Long) As Long
    Public Const MF_REMOVE = &H1000&
    Public Const SC_CLOSE = &HF060&
    Public Const SC_MINIMIZE = &HF020&
    Public Const SC_MAXIMIZE = &HF030&
    Public Const MF_BYPOSITION = &H400&Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wflags As Long) As Long
    Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Public Declare Function setwindowpos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hwndinsertafter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wflags As Long) As LongPublic Sub Disabled(L_form As String)
    Dim hMenu As Long
    hMenu = GetSystemMenu(L_form, 0)
    RemoveMenu hMenu, SC_CLOSE, MF_REMOVE
    RemoveMenu hMenu, SC_MINIMIZE, MF_REMOVE
    RemoveMenu hMenu, SC_MAXIMIZE, MF_REMOVE
    End Sub
    Public Sub Disabled_alt(L_form As String)
    Dim hwndMenu As Long
    Dim c As Long
    hwndMenu = GetSystemMenu(L_form, 0)
    c = GetMenuItemCount(hwndMenu)
    DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
    c = GetMenuItemCount(hwndMenu)
    DeleteMenu hwndMenu, c - 1, MF_BYPOSITIONEnd SubPrivate Sub form_activate()
     Disabled (form1.hwnd)
     Disabled_alt (form1.hwnd)
    end sub
      

  2.   

    你可以在Form_unload或者Form_QueryUnload事件中,通过设置一个窗体变量来确定使Cancel参数=true或者false
    比如如果是点其他按钮退出Cancel = false,是点关闭按钮Cancel = True,这样可以达到你的目的