Domingo 22 de Diciembre de 2024, 22:05
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Presentacion Del Programa
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Presentacion Del Programa (Leído 1942 veces)
UserCode
Miembro MUY activo
Mensajes: 338
Presentacion Del Programa
«
en:
Jueves 2 de Noviembre de 2006, 02:12 »
0
hola buenas a todos!!
Esto no es algo de tema impotanton o serio, es algo de "ver si se puede o no" lo cual es referente a esa ventanita de presentacion que sale cuando se ejecuta un programa.
Pero en mi caso tengo una idea algo loca sobre como mostrar esa ventanita de presentacion, veran...
Yo he puesto en esa ventanita este código, el cual fuerza al Form a ser transparente, con un Alpha bajo, algo asi como papel cebolla:
Código: Text
'Codigo Interezante para forzar transparencia en un form de manera muy sencilla y con transparencia graduable
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 = (-16)
Private Const GWL_EXSTYLE = (-20)
'Requires Windows 2000 or later:
Private Const WS_EX_LAYERED = &H80000
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Public Sub MakeWindowTransparent(ByVal hWnd As Long, ByVal alphaAmount As Byte)
Dim lStyle As Long
lStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, lStyle
SetLayeredWindowAttributes hWnd, 0, alphaAmount, LWA_ALPHA
End Sub
'La transparencia es graduable modificando el alphaamount en este caso esta en 150 mientras menor es este valor mas transparente se torna
Private Sub Form_Load()
Call MakeWindowTransparent(Form1.hWnd, 150)
End Sub
Ese código, sin modulo ni archivo externo, solo eso en un Form1 y sale el efecto, bueno mi idea es usar eso para la ventanita de presentacion pero con una variación la cual es la siguiente idea..
Que la ventana comienze con eso del alpha=0 y que con un bucle For o controles Timer suba poco a poco gradualmente hasta 250 que es ya el valor de visualización normal de la ventana. Y que al alcanzar el 250, vuelva poco a poco a bajar a 0.
Es decir, que la ventana aparezca gradualmente y se vaya desvaneciendose, ese es el efecto, sé que en
Call MakeWindowTransparent(Form1.hWnd, 150)
en el 150 podría poner una variable Intener "i" pero me he enrredado un poco tratando de ver como hacer esto, y he terminado con bucles infinitos y colgadas del vb.
bueno esto es para un programita y la presentacion pienso hacerles una bromita con esta imagen que muestro abajo como presentación, eso por lo del halloween, ya saben de donde saca McDonnald sus carnes para hamburquesa, por eso el dicho de "somos lo que comemos" o algo asi
la gente a quienes les estoy haciendo algo a veces se juegan con uno y bueno, les voy a poner eso de presentacion para ver que caras ponen, quien quita que hasta digan algo como:
oye no esta mal, nos gusta dejale eso asi.
claro le falta ponerle el nombre del programa, version, etc...
Creen que si se pueda sin problemas verdad! pregunto no sé
Tweet
Si esto es Leído por accidente, induzca al vomito
F_Tanori
Moderador
Mensajes: 1919
Nacionalidad:
Re: Presentacion Del Programa
«
Respuesta #1 en:
Jueves 2 de Noviembre de 2006, 04:10 »
0
Que tal
usercode
como va todo
cual es el drama?
yo te aconsejo este codigo
Código: Text
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
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 = (-16)
Private Const GWL_EXSTYLE = (-20)
'Requires Windows 2000 or later:
Private Const WS_EX_LAYERED = &H80000
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Public Sub MakeWindowTransparent(ByVal hWnd As Long, ByVal alphaAmount As Byte)
Dim lStyle As Long
lStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, lStyle
SetLayeredWindowAttributes hWnd, 0, alphaAmount, LWA_ALPHA
End Sub
'La transparencia es graduable modificando el alphaamount en este caso esta en 150 mientras menor es este valor mas transparente se torna
Private Sub Form_load()
MakeWindowTransparent Form1.hWnd, 0 'Iniciar en 'invisible'
Me.Timer1.Interval = 10 'Iniciar el timer
End Sub
Private Sub Timer1_Timer()
Dim Valor As Integer, Avance As Integer
Dim Vueltas As Integer, Retardo As Integer
Dim Desde As Integer, Hasta As Integer
Avance = 1
Desde = 0
Hasta = 250
Retardo = 10
For Vueltas = 1 To 2
For Valor = Desde To Hasta Step Avance
' Sleep Retardo 'Si se requiere que el efecto sea mas pausado
MakeWindowTransparent Form1.hWnd, Valor
DoEvents
Next Valor
Avance = -1
Desde = 250
Hasta = 0
Next Vueltas
Me.Timer1.Enabled = False
Unload Me
End Sub
Notas: Agrega una api para el retardo (
sleep
) por si acaso tambien funciona sin el pero por si esta demaciado rápido, y un control
timer
Saludos y espero que te sirva
" ExIsTo y A vEcEs PiEnSo "
NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================
UserCode
Miembro MUY activo
Mensajes: 338
Re: Presentacion Del Programa
«
Respuesta #2 en:
Jueves 2 de Noviembre de 2006, 16:25 »
0
epale!! compadre todo bien bien gracias
Gracias F_Tanori si sirve bien, pero como hago para que al llegar a 250 se quede en ese valor unos 2 o 3 segundos y luego vuelva a 0 ???
Si esto es Leído por accidente, induzca al vomito
luciano2
Miembro activo
Mensajes: 71
Re: Presentacion Del Programa
«
Respuesta #3 en:
Jueves 2 de Noviembre de 2006, 18:31 »
0
Hola que tal, una idea, podes agregar un retardo con la función Timer en un while, do loop. por ejemplo:
For Vueltas = 1 To 2
For Valor = Desde To Hasta Step Avance
' Sleep Retardo 'Si se requiere que el efecto sea mas pausado
MakeWindowTransparent Form1.hWnd, Valor
DoEvents
Next Valor
seg = Timer
While Timer < seg + 3
DoEvents
Wend
Avance = -1
Desde = 250
Hasta = 0
Next Vueltas
..donde dice While Timer < seg + 3, cambia el 3 por los segundos
saludos
----------------------------------
recursos visual basic, ocx y codigo fuente
F_Tanori
Moderador
Mensajes: 1919
Nacionalidad:
Re: Presentacion Del Programa
«
Respuesta #4 en:
Jueves 2 de Noviembre de 2006, 18:45 »
0
...gracias por la aportacion de luciano2 es una respuesta correcta..... aqui esta otra idea
Private Sub Timer1_Timer()
Dim Valor As Integer, Avance As Integer
Dim Vueltas As Integer, Retardo As Integer
Dim Desde As Integer, Hasta As Integer
Avance = 1
Desde = 0
Hasta = 250
Retardo = 10
For Vueltas = 1 To 2
For Valor = Desde To Hasta Step Avance
' Sleep Retardo 'Si se requiere que el efecto sea mas pausado
MakeWindowTransparent Form1.hWnd, Valor
DoEvents
Next Valor
Avance = -1
Desde = 250
Sleep 3000
'<--- Aqui va el retardo en milisegundos
Hasta = 0
Next Vueltas
Me.Timer1.Enabled = False
Unload Me
End Sub
Saludos y suerte
" ExIsTo y A vEcEs PiEnSo "
NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================
UserCode
Miembro MUY activo
Mensajes: 338
Re: Presentacion Del Programa
«
Respuesta #5 en:
Jueves 2 de Noviembre de 2006, 21:00 »
0
hola, he probado ambas formas y la aparicion, quieto por 3 segundos y vuelto a desvanecer poco a poco es todo un exito
Mil gracias a ambos, gracias muchachos espero no haber sido muy excentrico con esta idea de la ventanita de presentacion
Tremenda presentacion que tendra el programita, claro que ya le pondre otra imagen hehe
Si esto es Leído por accidente, induzca al vomito
UserCode
Miembro MUY activo
Mensajes: 338
Re: Presentacion Del Programa
«
Respuesta #6 en:
Viernes 3 de Noviembre de 2006, 15:52 »
0
hola,
no te preocupes, es en plataforma xp en donde estara el programita, gracias
Si esto es Leído por accidente, induzca al vomito
luciano2
Miembro activo
Mensajes: 71
Re: Presentacion Del Programa
«
Respuesta #7 en:
Viernes 3 de Noviembre de 2006, 19:58 »
0
Hola, me alegro que te sirva.
Te comento por si no sabías, que esa función solo te va a servir para plataformas windows 2000 y xp, pero en win 98 y Me no funciona.
...saludos
---------------------------------------------
Recursos visual basic
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Presentacion Del Programa