Pular para o conteúdo
Início » Programação » Removendo o botão ‘fechar’ dos forms no Visual Basic 6

Removendo o botão ‘fechar’ dos forms no Visual Basic 6

Hoje tive um problema bastante interessante no serviço com o Visual Basic e decidi compartilhar com vocês a solução. Um pedido comum em muitos “chefes de desenvolvimento” de sistemas é remover o botão de fechar dos forms do Windows. Existem duas soluções interessantes para isto, sendo que a segunda é mais focalizada.
A primeira é ir nas propriedades do formulário e colocar como False a opção ControlBox. Isso vai remover os três botões da barra, criando algo similar a uma splash screen:

Bom, mas o problema é que você pode querer travar apenas o botão de fechar e ter um botão de retorno nas telas MDIChild (talvez porquê no botão de retorno tem algum funcionamento específico). Aí achei este texto do DeveloperFusion com um código interessante. Adaptei um pouco:

Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Sub Form_Load()
    'Chamando a função para desabilitar o botão de "fechar"
    RemoveMenus
End Sub
Private Sub RemoveMenus()
    Dim hMenu As Long
    hMenu = GetSystemMenu(hWnd, False)
    DeleteMenu hMenu, 6, MF_BYPOSITION
End Sub

O resultado:

Bom, tentando entender, basicamente ele declara essas variáveis e constantes e seta isso na função RemoveMenus (que pode ser outro nome, claro). Aí você chama a função, que desabilita o botão. Conversando com o meu chefe, descobrimos que isso funciona apenas na tela interna, impossibilitando de fazer isso num módulo e chamar a função nas telas que um sistema comercial iria ter esse negócio.
Por fim, fica aí a dica.

Relacionados e Publicidade