我怎么才能把form窗体右上角的x去掉,使用户无法这样关闭窗体?

解决方案 »

  1.   

    把form1的controlbox属性设置为false
      

  2.   


    另一种方法:
    http://www.csdn.net/develop/read_article.asp?id=18774
      

  3.   

    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 Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
    Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
    Private Const MF_BYPOSITION = &H400&
    Private Const MF_DISABLED = &H2&  Private Sub DisableX(Frm As Form)
    Dim hMenu As Long, nCount As Long
    hMenu = GetSystemMenu(Frm.hwnd, 0)
    nCount = GetMenuItemCount(hMenu)
    Call RemoveMenu(hMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)
    DrawMenuBar Frm.hwnd 
    End Sub
      

  4.   

    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 Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Private Const MF_BYPOSITION = &H400&
    Private Const MF_DISABLED = &H2&Private Sub Form_Load()
        Call DisableX(Me)
    End SubPrivate Sub DisableX(frm As Form)
        Dim mMenu As Long
        Dim nCount As Long
        mMenu = GetSystemMenu(frm.hwnd, 0)
        nCount = GetMenuItemCount(mMenu)
        Call RemoveMenu(mMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)
        DrawMenuBar frm.hwnd
    End Sub
      

  5.   

    http://www.csdn.net/develop/read_article.asp?id=18774
      

  6.   

    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 Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
    Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
    Private Const MF_BYPOSITION = &H400&
    Private Const MF_DISABLED = &H2&  Public Sub RemoveX(hwnd As Long)
        Dim hMenu As Long
        Dim menuItemCount As Long    hMenu = GetSystemMenu(hwnd, 0)    If hMenu Then
            menuItemCount = GetMenuItemCount(hMenu)        RemoveMenu hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION
            RemoveMenu hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION        DrawMenuBar hwnd
        End If
    End Sub
    RemoveX Me.hwnd
      

  7.   

    将borderstyel=0
    然后自己做from的窗口标题。 ;)很多xp风格的窗体就是这样创建的。
      

  8.   

    楼上用的确定把controlbox设为false了?
      

  9.   

    楼上的确定把controlbox设为false了?
      

  10.   

    'API函数声明(关闭、最大化、最小化)
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
        ByVal bRevert As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, _
        ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Const MF_REMOVE = &H1000&
    Private Const SC_COLSE = &HF060
    Private Const SC_MAXIMIZE = &HF030
    Private Const SC_MINIMIZE = &HF020
    Private Sub Form_Load()
    ' 关闭、最大化、最小化按钮不可用
      RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_COLSE, MF_REMOVE
      'RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_MAXIMIZE, MF_REMOVE
      'RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_MINIMIZE, MF_REMOVE
    'ABC 为你窗体名