[Ayuda] BorderStyle = 0-None y no pasa nada ¡!¡!

Iniciado por agus0, 10 Diciembre 2010, 02:14 AM

0 Miembros y 1 Visitante están viendo este tema.

agus0

Holaa Estoy en un proyecto y puse el BoirderStyle en 0 - None y se fue el ControlBox Con el Caption en fin todo el borde de la ventana, pero Agregue un Menú para usae de PopUpMenu y Volvio a aparecer el ControlBox Con toda la Barra de Tareas y el Borde del Form aunque el BorderStyle este en 0... Saben que puedo hacer??

P.D= De mas esta decir que el PopUpMenu esta en Visible.False :S

Psyke1

Prueba con esto:
Código (vb) [Seleccionar]
Option Explicit

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

Private Const GWL_STYLE As Long = (-16)
Private Const WS_CAPTION As Long = &HC00000
Private Const WS_THICKFRAME  As Long = &H40000

Private Sub Form_Load()
    ' Vivan las ranas! :D
    SetWindowLong Me.hwnd, _
                  GWL_STYLE, _
                  GetWindowLong(Me.hwnd, GWL_STYLE) _
                  And Not WS_CAPTION And Not WS_THICKFRAME
End Sub


DoEvents! :P

agus0

#2
Esperaba Tu Respuesta Ranita !!

Gracias... Te Iva a decir que Falla un poco pero Solo en El IDE independientemente del IDE anda Bien =)


Muchas Gracias

agus0

Al Final si Tiene UN Bug, Cuando Ejecutas el Programa te muestra el Marco Igual pero como si no tuviera el foco y si lo apretás es como si no estuviera, se ba cuando minimizas el programa y lo volvés a dar Foco :S

Dessa

Que raro, haber si funciona refrescando ?
(no probé con el popmenu)

 

Option Explicit

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
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const GWL_STYLE As Long = (-16)
Private Const WS_CAPTION As Long = &HC00000
Private Const WS_THICKFRAME  As Long = &H40000

Private Sub Form_Load()
   ' Vivan las ranas! :D
   SetWindowLong Me.hwnd, _
                 GWL_STYLE, _
                 GetWindowLong(Me.hwnd, GWL_STYLE) _
                 And Not WS_CAPTION And Not WS_THICKFRAME
                 
       Call SetWindowPos(Me.hwnd, &H0, &H0, &H0, &H0, &H0, &H27)
             
End Sub


Adrian Desanti

agus0


Psyke1

#6
.
Yo uso WinXP y creo que me iva bien... :-\

Respuesta definitiva que soluciona el tema :  :xD
Código (vb) [Seleccionar]
Option Explicit

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

Private Const GWL_STYLE                 As Long = (-16)
Private Const WS_CAPTION                As Long = &HC00000

Private Function BorderStyleNone(ByVal bValue As Boolean) As Long
Dim lStyle                              As Long
   lStyle = GetWindowLong(Me.hWnd, GWL_STYLE)
   If bValue Then
       lStyle = lStyle Xor WS_CAPTION
   Else
       lStyle = lStyle Or WS_CAPTION
   End If
   BorderStyleNone = SetWindowLong (Me.hWnd, GWL_STYLE, lStyle)
End Function

Private Sub Form_Activate()
   Call BorderStyleNone(True)
End Sub


DoEvents! :P

raul338

#7
Y si pones el menu principal como invisible? :P (o sea que el menu tenga esta forma)

MenuPopup: Visible -> False
···Opcion 1
···Opcion 2

En tiempo de diseño SIEMPRE se va a ver el borde con titulo, una vez que presionas F5 ya no se deberia ver :)

agus0

Cita de: raul338 en 10 Diciembre 2010, 11:04 AM
Y si pones el menu principal como invisible? :P (o sea que el menu tenga esta forma)

MenuPopup: Visible -> False
···Opcion 1
···Opcion 2

En tiempo de diseño SIEMPRE se va a ver el borde con titulo, una vez que presionas F5 ya no se deberia ver :)

Eso ya lo se ¬¬ Se ve incluso si lo Compilo y lo pruebo Fuera del IDE. Y es así precisamente como tengo armado el MenuPopUP

raul338

Bueno bueno che, era una aclaración, no todos nacen sabiendo :xD

Aunque la respuesta de PsYkE1 (a.k.a Mr. Frog, cambio su nick para que el FBI no lo encuentre :xD :xD) funciona, lo probe aunque esta linea

Código (vb) [Seleccionar]
Call SetWindowPos(Me.hWnd, 0&, 0&, 0&, 0&, 0&, SWP_FlAGS)
es completamente innecesaria, esa linea pone el form encima de todo y no es lo que se pide :rolleyes:

Saludos!