求助,如何让右上方的关闭按钮能看见,但是点击后没反映呢?

解决方案 »

  1.   

    在form的unload事件里输入
    cancel=1
    如下:
    Private Sub Form_Unload(Cancel As Integer)
    Cancel = 1
    End Sub
    即可
      

  2.   

    可以用API函数把X的按钮灰掉啊
      

  3.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If UnloadMode = vbFormControlMenu Then
            Cancel = True
        End If
    End Sub
      

  4.   

    Option ExplicitPrivate Const SPI_SCREENSAVERRUNNING = 97&
    Private Declare Function SystemParametersInfo Lib "user32" _
            Alias "SystemParametersInfoA" _
            (ByVal uAction As Long, ByVal uParam As Long, _
            ByRef lpvParam As Any, _
            ByVal fuWinIni As Long) As Long '輦蚚ALT+F4腔滲杅汒隴
    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 Declare Function GetMenuItemCount Lib "user32" _
            (ByVal hMenu As Long) As Long
    '眕奻滲杅眈壽腔都講汒隴
    Private Const MF_BYPOSITION = &H400&Private Sub Form_Load()
        '場宎趙曹講
        Call Disabled
    End Sub'婓剒猁腔華源覃蚚蜆滲杅
    Private Function Disabled()
        Dim hwndMenu As Long
        Dim c As Long
        hwndMenu = GetSystemMenu(Me.hwnd, 0)   '鳳腕炵苀粕等曆梟
        c = GetMenuItemCount(hwndMenu)         '鳳腕炵苀粕等腔砐醴杅
        DeleteMenu hwndMenu, c - 1, MF_BYPOSITION   '刉壺郔綴珨跺炵苀粕等砐
        'c = GetMenuItemCount(hwndMenu)            '
        'DeleteMenu hwndMenu, c - 1, MF_BYPOSITION   '
    End Function
      

  5.   

    重启了一下就来了这么多人,晕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 其中各GetSystemMenu参数的意义如下:参数:       意义hwnd         Long, 系统菜单所在窗口的句柄bRevert     Long,如设为TRUE,表示恢复原始的系统菜单返回值   Long,如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,               也会返回零(简单的恢复原始的系统菜单)RemoveMenu参数的意义如下:参数:        意义hMenu        Long,菜单的句柄nPosition    Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,                 这个参数就代表欲改变的菜单条目的命令ID。如设置的是F_BYPOSITION,                              这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)wFlags       Long,常数MF_BYCOMMAND=&H0&或MF_BYPOSITION=&H400&,取决于                   nPosition参数返回值       Long,非零表示成功,零表示失败。然后就可以在程序中使用这两个函数了,在窗体的Form_Load()过程中加入如下代码:
    MyMenu = GetSystemMenu(Me.hwnd,0) \'得到系统菜单的句柄,Me.hwnd表示当前窗体的句柄RemoveMenu MyMenu, &HF060, MF_BYCOMMAND \'移去“关闭”菜单项,&HF060“关闭”菜单项的命令ID