從VB6

2016-04-11 59 views
1

使用DirectShow IMediaEvent.GetEvent我知道我在時間旅行回來,但我真的需要VB6援助( - :從VB6

我試圖無縫循環使用DirectShow視頻作爲this link記錄爲VB6 。因爲沒有內部循環實現,我正在尋找完成並尋求回到位置0.

要看完成我已經設置了一個事件處理程序使用IMediaEvent.SetNotifyWindow。據我所知,當這個事件彈出時,我必須使用.GetEvent循環所有排隊事件,直到事件隊列爲空,檢查感興趣的事件(EC_COMPLETE or EC_END_OF_SEGMENT)。

但我不知道什麼時候事件隊列是空的。該文檔似乎暗示.GetEvent將返回一個錯誤代碼時,發生這種情況,但根據VB6屬性查看器.GetEvent是一個Sub(一個void函數),因此它不能夠返回錯誤代碼。

怎麼辦?這工作還可以嗎?

回答

3

你的理解是正確的。 C++ GetEvent返回E_ABORT爲空隊列,這就是你應該看到結束嘗試獲取事件。

在VB6中,應將錯誤轉換爲VB6運行時錯誤。所以你看不到的返回值(次),你應該準備好 - 通常與零超時 - 處理錯誤(On Error Goto...,我想):

如果沒有事件在隊列中,這種方法等待達到msTimeout毫秒。 如果超時到期,該方法會引起運行時錯誤287.

+0

謝謝。我以某種方式閱讀了這部分文檔的權利。 –