一个简单的AVI播放器


【实例说明】
    用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