[英]Embedding Window Media Player in mfc
我在基於對話框的mfc應用程序中嵌入了窗口媒體播放器activex控件。 現在,所有播放/暫停按鈕都被禁用。 我要啟用它們。
正如我所說的put_uiMode(_T("mini"));
在寫這些行時
hr = m_spWMPPlayer->put_fullScreen(VARIANT_TRUE)
hr = m_spWMPPlayer->get_fullScreen(&b); // returned b = VARIANT_FALSE
b的值即將變為FALSE。
可能是什么錯誤? 有人知道嗎?
謝謝
BOOL CLuminPlayerDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
CComPtr<IWMPPlayer> m_spWMPPlayer;
CComPtr<IWMPRemoteMediaServices> m_spServices;
CComPtr<IWMPControls> m_spControls;
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
HRESULT hr = NULL;
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(__uuidof(WindowsMediaPlayer), 0, CLSCTX_INPROC_SERVER, IID_IOleObject, (void**)&m_spServices);
if(SUCCEEDED(hr))
{
BSTR str = NULL;
VARIANT_BOOL b ;
hr = m_spServices->QueryInterface(__uuidof(IWMPPlayer), (void**)&m_spWMPPlayer);
if(SUCCEEDED(hr))
{
hr = m_spWMPPlayer->get_enabled(&b); // returned b= VARIANT_TRUE
hr = m_spWMPPlayer->get_enableContextMenu(&b); //returned b = VARIANT_TRUE
hr = m_spWMPPlayer->get_uiMode(&str); // returned str = L"full"
hr = m_spWMPPlayer->put_uiMode(_T("mini")); //hr = S_OK
hr = m_spWMPPlayer->get_uiMode(&str); // str = L"mini"
hr = m_spWMPPlayer->put_fullScreen(VARIANT_TRUE);
hr = m_spWMPPlayer->get_fullScreen(&b); // returned b = VARIANT_FALSE
hr = m_spWMPPlayer->put_URL(_T("C:\\Visual Studio 2012\\Projects\\Lumin-Player\\Debug\\abc.mp4")); //returned hr = S_OK
hr = m_spServices->QueryInterface(__uuidof(IWMPControls), (void**)&m_spControls); // returned hr = S_OK
if(SUCCEEDED(hr))
{
hr = m_spControls->play(); //returned hr = S_OK
}
}
}
}
return TRUE; // return TRUE unless you set the focus to a control
}
MSDN說 :
為了在嵌入Windows Media Player控件時使全屏模式正常工作,視頻顯示區域的高度和寬度必須至少為一個像素。 如果在IWMPPlayer :: put_uiMode中指定的BSTR設置為“ mini”或“ full”,則控件本身的高度必須為65像素或更大,以容納除用戶界面之外的視頻顯示區域。
這假定播放器已經正確初始化為ActiveX控件。 在您的代碼中,您只需創建一個COM對象,而無需進行任何ActiveX控件初始化。 大概是播放器檢測到此錯誤並報告錯誤。
”在各個put_fullScreen
調用中,您的hr
put_fullScreen
應為0xC00D0FD2
NS_E_WMPOCX_NO_ACTIVE_CORE
“所請求的方法或屬性不可用,因為Windows Media Player ActiveX控件未正確激活。” 指出問題所在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.