Ocultar o botão X de um formulario - JJoão (08/2002)
Tal como a macro anterior a intenção é prevenir o encerramento do formulário através do botão fechar ou X, sendo esta medida mais drástica, fazendo o botão desaparecer.
Recorremos a rotinas da API do Windows, assim colocamos num modulo:
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long) _
As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) _
As Long
Const GWL_STYLE = (-16)
Const WS_SYSMENU = &H80000
Macro que em conjunto com as rotinas acima irá eliminar o botão X
Sub EscondeX(xForm)
Dim hWnd As Long
Dim GetStyle As Long
Dim StApp As String
Select Case Int(Val(Application.Version))
Case 8
'Formulario em MSExcel97
StApp = "ThunderXFrame"
Case Is > 8
'Formulario em MSExcel200x
StApp = "ThunderDFrame"
End Select
hWnd = FindWindow(StApp, xForm.Caption)
GetStyle = GetWindowLong(hWnd, GWL_STYLE)
'foi-se o X
SetWindowLong hWnd, GWL_STYLE, GetStyle And Not WS_SYSMENU
End Sub
No código do formulário, para que o botão X nem sequer chegue a aparecer, colocamos isto
Private Sub UserForm_Initialize()
EscondeX Me
End Sub
|