Pequeña duda!

Iniciado por klaususkun, 9 Enero 2008, 02:55 AM

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

klaususkun

Hola tengo una pequeña duda...
Se algo de visual basic lo mas basico... sin uso de ocx ni apis ...
he hecho tonterias con textbox comnandbutons imagenes etiquetas etc...

Y ahora viene mi duda tras estar trasteando asi en plan probando conocimiento basicos queria probar a hacer un programita enserio y me asalta una gran duda...

Seria posible crear un programa el cual no dispusiera de la barra tipica superiora donde esta el cerrar etc...? NO ME REFIERO A QUITAR EL MAXIMIZAR, MINIMIZAR, CERRAR.
Para que me entendais mejor imaginaros que quiero hacer un programa  el cual al abrirlo me dibuja un monigote en la pantalla (no dentro de un programa, sino por ejemplo encima de la barra de incio del windows)

No se si me he explicado muy bien ToT
Si siquen sin entenderme tratare de explicarselo graficamente poniendo ejemplos de programas ya existentes (pero que obiamente no estan hechos en Vbasic o eso creo..)

CesarTkgo69

#1
Creo que es esto lo que buscas  ;D
Suerte, Saludos

Código (vb) [Seleccionar]

Const LWA_COLORKEY = &H1
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000

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 SetLayeredWindowAttributes Lib "user32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Form_Load()
Shape Me, &H0&  ' Al cargar el formulario, se quita el color indicado, en este caso el negro
End Sub

Private Sub Shape(Frm As Form, Color As Long)
Frm.BackColor = Color
Dim Ret As Long
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, Color, 0, LWA_COLORKEY
End Sub


Chauuuuz

klaususkun

#2
Esta muy curioso ese script y se asemeja mucho pero no es 100% lo que quiero ya que el scrip que me has puestoal ejecutarlo me sale la ventana del formulario con sus bordes y la barra de arriva con el minimizar maximiza y cerrar pero lo k es dentro del formulario genial xk es transparente n_n

Si se puediera quitar el borde (y en ello incluyo la barra superiora donde esta el titulo y el ya repetido minimizar,maximizar y cerrar seria perfercto!!)

Ejemplo:

Perdon si la imagen es algo grande ^^UU


CesarTkgo69

#3
Pero viejito,
El form en estilo de borde tiene que estar en "none"
esto aparece justo arribita de donde le pones
el Caption al form ;D ojala lo veas
Para que quede mas claro
(y aprovechando el rato de ocio  :xD)



Y por si acaso, te posteo altiro la funcion para
mover el form ;)

Código (vb) [Seleccionar]

Option Explicit

' Libreria mover Formulario
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "User32" () As Long

' Mover el Form
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    SendMessage Me.hWnd, &HA1, 2, 0&
End Sub


Saludos, Chauuuz

klaususkun

Muchisimas Gracias tio!!
No me di cuenta de lo del border ^^UU

y gracias pos el ultimo codigo tb aunk no creo que use el de moverse ya que deseo que este fijo en un determinado sitio a si que me viene al pelo ^o^

Muchas gracias ^^