注册 登录
编程论坛 VB6论坛

求助???????????

jeck008 发布于 2013-06-04 09:48, 428 次点击
我用ActiveMovie控件放视频这样写为什么不行啊?怎么解决?

这样写不行?
Private Sub Image1_Click()
 ActiveMovie1.FileName = "f:\2.avi"
 Caption = ActiveMovie1.FileName
ActiveMovie1.Run
End Sub

这样分两个地方写就可以,但我要像上面那样写放到一个事件里怎么办?

Private Sub Image2_Click()
 ActiveMovie1.FileName = "f:\3.avi"
 Caption = ActiveMovie1.FileName
End Sub


Private Function fun()

ActiveMovie1.Run
End Function

2 回复
#2
风吹过b2013-06-04 10:54
按你下面的代码来看,
这个控件,你给了文件名后,控件就在试着打开,打开文件后,在打开文件后,才能执行 run 操作。
在这种情况下,
如果你要写到一个事件里,那在 你 给了文件名后,
不断检测 这个控件的 状态,是不是 可以 文件打开完成,如果是,则开始播放,否则继续等待。

当 文件比较小时,VB 再次调用 另一个函数时,有系统的执行开销,在这个系统开销的时间内,
控件打开了这个 视频文件,那么正好开始执行函数的代码,也就文件能播放。
如果文件比较大时,VB调用函数的开销时间内,无法打开这个视频文件,那么你上面分二段写也会导致出错。
#3
lowxiong2013-06-04 11:50
我里面居然没有ActiveMovie控件,强行加载amcompat.tlb居然说不能注册Active部件,悲剧!
你加个doevents试试。
我播放影片一般是引用ActiveMovie control type library(quartz.dll),它是一个简版directshow应用,可以自由搭配视音频解码器。
1