Usando las API de Windows:
 
Sleep SndPlaySound
MCIExecute(Sonido) MCIExecute(Video)
Blend (Efecto Visual)  
 
Ejercicio Nš 1: Sleep
Las API de Windows (Application Programming Interface) son funciones automáticas que ya trae incorporadas el sistema operativo Windows y que podemos convocar para programar en Visual Basic. De esta manera ahorramos recursos y programamos en un nivel de mayor complejidad.

Para esta aplicación vamos a trabajar con un control Image para el jeep y dos array de controles para los camellos. La idea es que el auto avance hasta que se encuentre con un camello allí se detiene, hasta que el camello salga del paso y luego continúa hasta el próximo obstáculo. Para esto vamos a usar la API Sleep que nos permite hacer la pausa, con poca programación y sin usar controles extras, como un Timer. Las declaraciones de las API las vamos a traer del Visor de API de Visual Basic y las copiamos en un Módulo de extensión .bas que agregamos desde Proyecto, agregar Módulo. El código es el siguiente:

Para el Módulo:

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Para el Formulario:


Private Sub Form_Click()
Static x As Integer
x = 550 'Left del objeto.
For I = 1 To 4

picCarro.Move x 'Mueve el objeto hacia la izquierda.
Sleep 2000 'Llama a la API Sleep (2000 milisegundos = 2 segundo de pausa).
x = x + 900 'Incrementa el left.
Image1(a).Visible = False
Image2(a).Visible = True
a = a + 1
If a = 8 Then a = 0
Next I
End Sub

El ejercicio con su código completo puede bajarse de AQUÍ.

 
Ejercicio Nš 2: SndPlaySound
 

En este ejercicio vamos a activar un sonido Wave, al terminar de cargarse un Formulario, para esto vamos a usar la API SndPlaySound que ejecuta sonidos Wave. La traemos desde el Visor de las API a la declaración y la guardamos en un Módulo .bas como en el ejemplo anterior. Luego declaramos en el Formulario en la parte de Declaraciones Generales una variable como entera llamada sonido. Y la ejecutamos por código en el procedimiento Activate del Formulario con la siguiente sintáxis:

sonido = App.Path(SndPlaySound & "\Sonido.wav")

En el archivo wav colocamos el nombre del sonido elegido y este debe estar en el mismo directorio que el proyecto ya que estamos usando el objeto App de Application.

 
Ejercicio Nš 3: MCIExecute (Sonido).
 
Esta aplicación nos muestra como ejecutar sonidos de tipo Wave y Midi, con la Api: MCIExecute. Reemplacen los archivos Wave y Midid, por los que ustedes deseen. El código es:
Option Explicit
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private sonido

Private Sub Command1_Click()

sonido = mciExecute("Play c:\Thefinal.mid")

End Sub

Private Sub Command2_Click()
sonido = mciExecute("Play C:\egipto.wav")
End Sub

Private Sub Command3_Click()
sonido = mciExecute("Stop C:\Thefinal.mid")
sonido = mciExecute("Stop C:\egipto.wav")
End Sub

El código competo puede bajarse de Aquí.

 
Ejercicio Nš 4: MCIExecute (Video).
 
Esta aplicación permite ejecutar un Video usando la Api, MCIExecute. El código es el siguiente:
Option Explicit

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Command1_Click()

Const sAVIFile As String = "c:\Filemove.avi"

'abrir un nuevo video
mciExecute "OPEN " + sAVIFile + " TYPE AVIVIDEO ALIAS kpdvideo STYLE POPUP"

'determinar el tamaño del video a desplegar
mciExecute "PUT kpdvideo WINDOW AT 306 290 180 40"

'determinar la velocidad del video
mciExecute "SET kpdvideo SPEED 600"

'ejecutar el video
mciExecute "PLAY kpdvideo WAIT"
'remover el video de la memoria
mciExecute "CLOSE kpdvideo"

End Sub

 

El código competo puede bajarse de Aquí.

 
Ejercicio Nš 5: Blend.
 
Esta aplicación muestra un efecto de superposición y transparencia de dos imágenes. El código es:

Option Explicit

'Este proyecto requiere de dos controles Picture

'Cada control debe tener una imagen, ambas deben ser distintas
Const AC_SRC_OVER = &H0
Private Type BLENDFUNCTION
BlendOp As Byte
BlendFlags As Byte
SourceConstantAlpha As Byte
AlphaFormat As Byte
End Type
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Form_Load()

Dim BF As BLENDFUNCTION, lBF As Long

'Cambiar el modo gráfico para que se mantenga la imagen
Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
'usar pixels con la Api
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
'asignar los parámetros
With BF
.BlendOp = AC_SRC_OVER
.BlendFlags = 0
.SourceConstantAlpha = 128
.AlphaFormat = 0
End With

'copia la función blend a una variable en memoria de tipo long
RtlMoveMemory lBF, BF, 4

'aplicar la Api desde la picture1 sobre la picture2
AlphaBlend Picture2.hdc, 50, 0, 100, 100, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, lBF
End Sub

El código competo puede bajarse de Aquí.

 
 
Volver al Menú Principal Volver a Ejercicios