[Source] MakeSkin - Crea un formulario con la forma que desees

Iniciado por Mad Antrax, 8 Abril 2007, 20:35 PM

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

Mad Antrax

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...

Código (vb) [Seleccionar]
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!!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

vivachapas


DrakoX

no sabia q con tan pocas lineas,
se podia lograr una fomra X para el fomr,

mcuhas gracias

salu2

karmany

Muy bueno ||MadAntrax||.

Voy a ver si lo consigo hacer en MASM, ya que sólo utiliza API y es muy sencillo.
Gracias

SERBice

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á?....

Tughack

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

MANULOMM

esta bien  bueno... gracias ||MadAntrax||

Atentamente,


Juan Manuel Lombana
Medelín - Colombia


HALC12

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

invisible_hack

"Si no visitas mi blog, Chuck te dará una patada giratoria"

SERBice

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.