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.
Atualmente como desenvolvedor de software backend, mas já foi jornalista e editor de conteúdos por mais de 10 anos, trabalhando também em portais importantes como o START UOL, Card na Manga e A Pá Ladina, além de outros sites de esports e MMOs. Hoje cobre com especialidade jogos como Fortnite, World of Warcraft, souls-likes, animes, games, cultura pop e é fã de cosplays!