今天偶爾需要編寫一個媒體播放程式,但是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);
程式正常循環播放!
希望能夠對需要實作循環播放的朋友有幫助!