Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: karmany en 19 Marzo 2006, 14:26 pm



Título: Modificar Border Style en tiempo de ejecución
Publicado por: karmany en 19 Marzo 2006, 14:26 pm
Hola a todos..
En una web, me pasaron (un tal José Miguel Sánchez) un código para modificar el border style de un formulario en tiempo de ejecución. La verdad que me ha resultado muy interesante y lo dejo aquí para el que quiera que lo pueda utilizar.

Código:
Option Explicit

'Bits o parametros de estilo de la ventana:
Const WS_MAXIMIZEBOX = &H10000
Const WS_MINIMIZEBOX = &H20000
Const WS_THICKFRAME = &H40000
Const WS_SYSMENU = &H80000
Const WS_CAPTION = &HC00000
Const GWL_STYLE = (-16)

'Funciones para modificar el estilo de la ventana:
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

Dim WndStyle As Long

Private Sub Command1_Click()
Dim lStyle As Long

'Guardamos los parametros actuales del estilo de la ventana para luego poder restaurarla:
WndStyle = GetWindowLong(Me.hwnd, GWL_STYLE)

'Quitamos cualquier estilo a la ventana para conseguir una ventana rectangular:
lStyle = WndStyle And Not WS_MAXIMIZEBOX And Not WS_MINIMIZEBOX And Not WS_THICKFRAME And Not WS_CAPTION
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)

End Sub

Private Sub Command2_Click()
'Devolvemos cualquier estilo a la ventana:
Call SetWindowLong(Me.hwnd, GWL_STYLE, WndStyle)

'Oculta y muestra al instante la ventana para que se muestren los cambios.
Me.Hide
Me.Show

End Sub