Encontré hace tiempo esta función, no la he programado yo. Sirve para dar forma a los formularios según la imagen de fondo que tengan, solo tienes que decirle que color será el usado para las transparencias, ejemplo: vbWhite, vbBlack, vbRed, etc...
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 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
Private Sub Form_Load()
'Llamamos a la función, enviamos el nombre del Form y el Color de fondo
MakeSkin Form1, vbWhite
End Sub
Private Sub MakeSkin(ByVal Frm As Form, ByVal BColor As Long)
'Función que "recorta" un formulario según su color de fondo.
Frm.BackColor = BColor
Tmp = GetWindowLong(Frm.hwnd, -20)
Tmp = Tmp Or &H80000
SetWindowLong Frm.hwnd, -20, &H80000
SetLayeredWindowAttributes Frm.hwnd, BColor, 0, &H1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Permite mover el formulario al hacer click encima de él
ReleaseCapture
SendMessage Me.hwnd, &HA1, 2, 0&
End Sub
Usar imagenes BMP y con solor de 32 bits, así no tendreis problemas... si os preocupa el tamaño final luego empaquetais con UPX y problema resuelto xD
Saludos!!
muy buen code... enseguida lo pruebo!!!!
no sabia q con tan pocas lineas,
se podia lograr una fomra X para el fomr,
mcuhas gracias
salu2
Muy bueno ||MadAntrax||.
Voy a ver si lo consigo hacer en MASM, ya que sólo utiliza API y es muy sencillo.
Gracias
se que este post es algo viejo, per mejor revivir eset antes que abrir otro ¿verdad?...
nadie sabe como ahcer esto msimo pero con avrios colores... es decir, que en lugar de decirle que el color transparente es blanco, negro o cualqueir otro color le digamos que debe hacer transparente al naranja, el verde y el blanco por dar u ejemplo....
se podrá?....
Cita de: SERBice en 21 Julio 2007, 06:31 AM
se que este post es algo viejo, per mejor revivir eset antes que abrir otro ¿verdad?...
nadie sabe como ahcer esto msimo pero con avrios colores... es decir, que en lugar de decirle que el color transparente es blanco, negro o cualqueir otro color le digamos que debe hacer transparente al naranja, el verde y el blanco por dar u ejemplo....
se podrá?....
Si claro, solo hay k ponerle mas colores.
Private Sub Form_Load()
'Llamamos a la función, enviamos el nombre del Form y el Color de fondo
MakeSkin Form1, vbWhite
MakeSkin Form1, vbRed
MakeSkin Form1, vbGreen
MakeSkin Form1, vbBlue
....
End Sub
Salu2
esta bien bueno... gracias ||MadAntrax||
Atentamente,
Juan Manuel Lombana
Medelín - Colombia
alguien me puede explicar que hace este codigo en si por que lo probe y solo coloca transparente el formulario y le coloque una imagen de fondo y no paso nada de nada
Hey es un code interesante la verdad...
Salu2!!
Cita de: Tughack en 21 Julio 2007, 11:25 AM
Cita de: SERBice en 21 Julio 2007, 06:31 AM
se que este post es algo viejo, per mejor revivir eset antes que abrir otro ¿verdad?...
nadie sabe como ahcer esto msimo pero con avrios colores... es decir, que en lugar de decirle que el color transparente es blanco, negro o cualqueir otro color le digamos que debe hacer transparente al naranja, el verde y el blanco por dar u ejemplo....
se podrá?....
Si claro, solo hay k ponerle mas colores.
Private Sub Form_Load()
'Llamamos a la función, enviamos el nombre del Form y el Color de fondo
MakeSkin Form1, vbWhite
MakeSkin Form1, vbRed
MakeSkin Form1, vbGreen
MakeSkin Form1, vbBlue
....
End Sub
Salu2
parece que no has analizado el code.
el code le da a la propiedad "BackgroundColor" el valr del color que se quiere ocultar y asi; se oculta todo el form, incluyento el color clando de la imagen de fondo (o el color que se elija), si opnes varias lineas como tu indicas el code no funciona, ya que primero se le indica un color, luego otro y asi sucesivamente y el codigo por decirlo de alguna manera, se auto-anula.
asi p0ues, no funciona como tu dices, igualmente agradezco tun interes.
si alguien sabe la forma de hacer esto, pero con multiples colores os agradeceria.