フォームのシステムメニューを削除する

VisualBasic6用
フォームのシステムメニューを削除する

Option Explicit
'フォームに、チェックボックス(Check1)をコントロール配列として5個(1〜5)と
'コマンドボタン(Command1)を1個配置してください。

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 SC_SIZE = &HF000&      'サイズ変更
Private Const SC_MOVE = &HF010&      '移動
Private Const SC_MINIMIZE = &HF020&  '最小化
Private Const SC_MAXIMIZE = &HF030&  '最大化
Private Const SC_CLOSE = &HF060&     '閉じる

Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&
'-----------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
    Dim intCheckCnt As Integer
    Dim lngMenuID(1 To 5) As Long
    lngMenuID(1) = SC_MOVE
    lngMenuID(2) = SC_SIZE
    lngMenuID(3) = SC_MINIMIZE
    lngMenuID(4) = SC_MAXIMIZE
    lngMenuID(5) = SC_CLOSE
    For intCheckCnt = 1 To 5
        If Check1(intCheckCnt).Value = 1 Then
            RemoveMenu GetSystemMenu(Me.hWnd, 0), lngMenuID(intCheckCnt), MF_BYCOMMAND
            Check1(intCheckCnt).Enabled = False
        End If
    Next
    If Check1(3).Value = 1 And Check1(4).Value = 1 Then
        RemoveMenu GetSystemMenu(Me.hWnd, 0), 0, MF_BYPOSITION
    End If
End Sub