Trucos Deshabilitar los botones (y el menú system) de un form Normal o MDI

Extraído del web del Guille. No dejes de visitarlo.

En el código de ejemplo se incluye la forma de quitar TODAS las opciones, incluyendo maximizar, restaurar, etc. y también cómo quitar sólo lo que te interesa.
También incluyo el código para el VB4 de 16 bits.

Este código vale tanto para forms normales como para MDI-Form, además si quitas el menú "Mover", no podrás mover el formulario
de sitio.
Hay más constantes, que puedes encontrar en el fichero de las declaraciones del API que se incluyen con el VB.

En la sección de las declaraciones del MDI-Form escribe lo siguiente:

'------------------------------------------------------------------
'Prueba para quitar opciones del menú System de un MDIForm
'
'Para VB4: (27/Oct/97)
'
'©Guillermo 'guille' Som, 1997-98
'------------------------------------------------------------------

Option Explicit

#If Win32 Then
    'Para 32 bits (VB4 y VB5)
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
#Else
    'Para 16 bits (VB4 y VB3)
Private Declare Function GetSystemMenu Lib "user" (ByVal hWnd%, ByVal bRevert%) As Integer
Private Declare Function DeleteMenu Lib "user" (ByVal hMenu%, ByVal iditem%, ByVal wFlags%) As Integer
#End If

'Constantes
Const SC_SIZE = &HF000
Const SC_MOVE = &HF010
Const SC_MINIMIZE = &HF020
Const SC_MAXIMIZE = &HF030
Const SC_CLOSE = &HF060
Const SC_RESTORE = &HF120

Const MF_SEPARATOR = &H800
Const MF_BYPOSITION = &H400
Const MF_BYCOMMAND = &H0

Private Sub MDIForm_Load()
#If Win32 Then
    Dim hWnd&, hMenu&, Success&
#Else
    Dim hWnd%, hMenu%, Success%
#End If
    Dim i%

    hWnd = Me.hWnd
    hMenu = GetSystemMenu(hWnd, 0)

    'Quitar todos (va de 0 a 8)
    For i = 8 To 0 Step -1
         Success = DeleteMenu(hMenu, i, MF_BYPOSITION)
    Next
    Exit Sub

    'Usa esto para quitar los menús que te interesen:
    Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)
    Success = DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND)
    Success = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
    Success = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
    Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
    Success = DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND)
End Sub



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com