热情软件屋

 

如何播放资源文件中的AVI动画


编号:QA001203
建立日期: 1999年6月18日 最后修改日期:1999年6月18日
所属类别:

LingQing:
    vb5
    Win95
    在下从网上下载了一个可以从资源文件中提取AVI动画文件并播放,但我运行该程序时不能播放,不知是何原因,请各位高手赐教一二
     '资源文件代码
     ' 100 AVI MOVEABLE PURE "SEARCH.AVI"
    
     'Form1 代码
    
     Private Const RES_AVI = 100&
     Dim ani As New SysAnimate32
    
     Private Sub cmdPlay_Click()
     cmdPlay.Enabled = False
     cmdStop.Enabled = True
     ani.pPlay
     End Sub
    
     Private Sub cmdstop_Click()
     cmdStop.Enabled = False
     cmdPlay.Enabled = True
     ani.pStop
     End Sub
    
     Private Sub Form_Load()
     ani.Create Me.hwnd, RES_AVI, 136, 40, 48, 50
     End Sub
    
     Private Sub Form_Unload(Cancel As Integer)
     ani.Destroy
     End Sub
    
     'Class Module 代码
    
     Option Explicit
    
     Private Const ANIMATE_CLASS = "SysAnimate32" & vbNullChar
     Private Const WM_USER = &H400&
     Private Const ACS_CENTER = &H1&
     Private Const ACS_TRANSPARENT = &H2&
     Private Const ACS_AUTOPLAY = &H4&
     Private Const ACM_OPEN = WM_USER + 100
     Private Const ACM_PLAY = WM_USER + 101
     Private Const ACM_STOP = WM_USER + 102
     Private Const WS_EX_TRANSPARENT = &H20&
     Private Const WS_CHILD = &H40000000
    
     Private Declare Function DestroyWindow Lib "user32" _
     (ByVal hwnd As Long) As Long
    
     Private Declare Function CreateWindowEx Lib "user32" _
     Alias "CreateWindowExA" (ByVal dwExStyle As Long, _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String, _
     ByVal dwStyle As Long, ByVal x As Long, _
     ByVal y As Long, ByVal nWidth As Long, _
     ByVal nHeight As Long, ByVal hWndParent As Long, _
     ByVal hMenu As Long, ByVal hInstance As Long, _
     lpParam As Any) 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 StaticHwnd As Long
     Private AnimateHwnd As Long
    
    
     Public Sub Create(ByVal hwnd As Long, ByVal Id As Variant, _
     ByVal Left As Long, ByVal Top As Long, _
     ByVal width As Long, ByVal height As Long)
    
     StaticHwnd = CreateWindowEx(WS_EX_TRANSPARENT, "Static", _
     vbNullString, &H50000003, Left, Top, width, _
     height, hwnd, 0&, App.hInstance, ByVal 0&)
     AnimateHwnd = CreateWindowEx(WS_EX_TRANSPARENT, ANIMATE_CLASS, _
     vbNullString, &H50000003, 0, 0, width, height, _
     StaticHwnd, 0&, App.hInstance, ByVal 0&)
    
     If IsNumeric(Id) Then
     SendMessage AnimateHwnd, ACM_OPEN, 0&, ByVal CLng(Id)
     Else
     SendMessage AnimateHwnd, ACM_OPEN, 0&, ByVal CStr(Id) & vbNullChar
     End If
    
     End Sub
    
     Public Sub pPlay()
     SendMessage AnimateHwnd, ACM_PLAY, -1&, ByVal &HFFFF0000
     End Sub
    
     Public Sub pStop()
     SendMessage AnimateHwnd, ACM_STOP, 0&, ByVal 0&
     End Sub
    
     Public Sub Destroy()
     Me.pStop
     DestroyWindow AnimateHwnd
     DestroyWindow StaticHwnd
     End Sub

回答:

    我以前从http://ourworld.compuserve.com/homepages/benjab下载过你说的这个程序。关键的一点是必须编译成EXE程序后,才能显示动画。如果你在集成环境中显示,什么也看不到。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio