【实例说明】
用API函数,制作一个简单的AVI播放器。
【编程思路】 通常在VB中播放AVI动画文件需要借助Animation控件来实现。该控件不是VB的内部控件,使用时要从“部件”中向控件工具箱添加,程序发布时需要打包Mci32.ocx(该控件包含于Mci32.ocx中)。另外如果应用程序需要同时播放多个不同的动画文件就得使用多个Animation控件,大大增加了对系统资源的消耗。其实我们完全可以用Windows的API函数来完成AVI动画的播放,这个API函数就是mciSendString。
【设计步骤】 1.新建一个标准工程,创建一个新窗体,默认名为Form1。
2.在Form1窗体中放置三个CommandBox控件。
3.在同一级目录下添加一个AVI文件,命名为"1.AVI"。
4.源程序 [素材源程序下载]
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
'打开一个avi文件
Private Sub Command1_Click()
Dim AVI_Name As String, AVI As String
AVI_Name = App.Path & "\1.avi"
'关闭先前可能打开的avi文件
mciSendString "close MyAVI", "", 0, 0
AVI = "open " & AVI_Name & " alias MyAVI parent " & Picture1.hWnd & " style child"
'在目标容器中打开文件
mciSendString AVI, "", 0, 0
'设置图片框坐标系单位为pix
Picture1.ScaleMode = 3
AVI = "put MyAVI window at 0 0 " & Picture1.ScaleWidth & " " & Picture1.ScaleHeight
'输出动画第一帧到目标容器
mciSendString AVI, "", 0, 0
Command2.Enabled = True
End Sub
'播放/暂停
Private Sub Command2_Click()
I = I + 1
If I / 2 <> Int(I / 2) Then
Command2.Caption = "暂停"
mciSendString "play MyAVI", "", 0, 0
Else
Command2.Caption = "播放"
mciSendString "pause MyAVI", "", 0, 0
End If
End Sub
'关闭动画文件
Private Sub Command3_Click()
I = 0: Form_Unload 0
Command2.Enabled = False
End Sub
|