屏蔽关闭按钮


【实例说明】
    每个窗体的标题上都设置了“关闭”、“最大化”、“最小化”按钮。如果不想使用这些按钮,该如何屏蔽这三个按钮?下面的程序只是屏蔽关闭按钮。

【编程思路】
    本例用到了API函数中的GetSystemMenu函数和RemoveMenu函数,用GetSystemMenu函数得到系统菜单的句柄,用RemoveMenu函数删除指定的菜单条目。下面是这两个函数的用法:
    (1)GetSystemMenu函数功能:对系统菜单进行复制或修改。
    函数声明:
    Private Declare Function GetSystemMenu Lib "user32" _
        (ByVal hwnd As Long, _
        ByVal bRevert As Long) _
         As Long
    参数:hWnd参数,为窗口句柄;bRevert参数,指定要执行的操作。
    返回值:当brevert参数为false,返回值为窗口菜单拷贝的句柄;否则,返回值为null。
    (2)RemoveMenu:从指定菜单中删除一个菜单项或分离一个子菜单。
    函数声明:
    Private Declare Function RemoveMenu Lib "user32" _
        (ByVal hMenu As Long, _
        ByVal nPosition As Long, _
        ByVal wFlags As Long) As Long

    参数:hMenu参数,指定被修改的菜单的句柄;nPosition参数,指定要删除的菜单项;Wflags参数,指定对参数
          nPosition的含义进行解释。此参数必为下列值之一。MF_BYCOMMAND:表示nPosition给出菜单项的表示符
          (默认)。MF_BYPSITION:表示nPosition给出菜单项相对于0的位置。
    返回值:函数调用成功,返回非0值;否则返回0的值。

【设计步骤】
    1.新建一个标准工程,创建一个新窗体,命名为Form1。
    2.源程序  [素材源程序下载]


'声明API函数
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_REMOVE = &H1000&
Private Const SC_COLSE = &HF060

Private Sub Form_Load()
        On Error Resume Next
        RemoveMenu GetSystemMenu(Me.hwnd, 0), SC_COLSE, MF_REMOVE '
End Sub