天天看點

Rad Studio 中使用windows media player 循環播放問題解決方法

今天偶爾需要編寫一個媒體播放程式,但是rad studio所帶的TPlayer已經不能滿足解碼需求,按照網上提示采用windows media player的ActiveX控件來解決。

一切就緒,但是一個循環播放卡住了。按照網上代碼

player->settings->setMode(L"loop", true);

無效。

看到有的朋友通過設定playCount來實作有限循環,但是畢竟不是我所想。

後來采用visual studio 2019采用C#編寫同樣的程式,

player.settings.setMode(L"loop", true);

卻能夠成功實作循環播放,看來是程式中參數出現了問題。

于是通過調用

player->settings->getModel(L"Loop", &val);

發現val為0,也就是說明設定沒有生效,百思不得其解。

後來檢視了程式代碼發現,資料類型不一緻。

在WMPLib_TLB.h中函數聲明如下:

  virtual HRESULT STDMETHODCALLTYPE setMode(BSTR bstrMode, VARIANT_BOOL varfMode) = 0;

VARIANT_BOOL在wtypes.h中定義如下:

typedef short VARIANT_BOOL;

将程式改為

player->settings->setMode(L"Loop", -1);

程式正常循環播放!

希望能夠對需要實作循環播放的朋友有幫助!