从VB6使用DirectShow IMediaEvent.GetEvent

从VB6使用DirectShow IMediaEvent.GetEvent,vb6,directshow,Vb6,Directshow,我知道我要回到过去,但我确实需要VB6帮助(-: 我正在尝试使用DirectShow无缝地循环一个视频,如VB6 at的文档所述。由于没有内部循环实现,我正在寻找完成并返回到位置0 要查看完成情况,我已经使用IMediaEvent.SetNotifyWindow设置了一个事件处理程序。据我所知,当此事件弹出时,我必须使用.GetEvent遍历所有排队的事件,直到事件队列为空,检查感兴趣的事件(EC_COMPLETE或EC_END_of_SEGMENT) 但我不知道事件队列何时为空。文档似乎暗示发

我知道我要回到过去,但我确实需要VB6帮助(-:

我正在尝试使用DirectShow无缝地循环一个视频,如VB6 at的文档所述。由于没有内部循环实现,我正在寻找完成并返回到位置0

要查看完成情况,我已经使用
IMediaEvent.SetNotifyWindow
设置了一个事件处理程序。据我所知,当此事件弹出时,我必须使用
.GetEvent
遍历所有排队的事件,直到事件队列为空,检查感兴趣的事件(
EC_COMPLETE或EC_END_of_SEGMENT

但我不知道事件队列何时为空。文档似乎暗示发生这种情况时,
.GetEvent
将返回错误代码,但根据VB6属性查看器
。GetEvent
是一个子函数(一个无效函数),因此无法返回错误代码


<> P>你要怎么做?< /P> < P>你的理解是正确的。C++对于空队列返回<代码> EYAUBLTE</COD>这是你应该看到的,试图获取事件。

在VB6中,错误应转换为VB6运行时错误。因此,您看不到返回值(Sub),并且您应该准备好处理错误(通常为零超时)(,我认为):

如果队列上没有事件,此方法将等待最长为msTimeout毫秒的事件到达。如果超时过期,此方法将引发运行时错误287。