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 GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Const MF_BYCOMMAND = &H0&
Const MF_REMOVE = &H1000&
Const MF_BYPOSITION = &H400&
Private Sub MDIForm_Load()
Dim hSysMenu As Long, nCnt As Long
' Get handle to our form's system menu
' (Restore, Maximize, Move, close etc.)
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
' Get System menu's menu count
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
' Menu count is based on 0 (0, 1, 2, 3...)
'RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE
RemoveMenu hSysMenu, nCnt - 3, MF_BYPOSITION Or MF_REMOVE 'delete max button
RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE 'delete recover button
'DrawMenuBar Me.hwnd
' Force caption bar's refresh. Disabling X button
'Me.Caption = "Try to close me!"
End If
End If