如何播放资源文件中的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程序后,才能显示动画。如果你在集成环境中显示,什么也看不到。
此问题由李海回答。
| |
|
|
| |
|
|