Я встраиваю элемент управления activex оконного медиаплеера в диалоговое приложение mfc. Теперь все кнопки play / pause отключены. Я хочу включить их.
Как я поставил 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
}
Чтобы полноэкранный режим работал правильно при встраивании элемента управления проигрывателя Windows Media, область отображения видео должна иметь высоту и ширину не менее одного пикселя. Если значение BSTR, указанное в IWMPPlayer :: put_uiMode, установлено в значение «mini» или «full», высота самого элемента управления должна составлять 65 пикселей или более, чтобы вместить область отображения видео в дополнение к пользовательскому интерфейсу.
Это предполагает, что проигрыватель уже правильно инициализирован как элемент управления ActiveX. В своем коде вы просто создаете COM-объект без какой-либо инициализации элемента управления ActiveX. Предположительно, игрок обнаруживает это и сообщает об ошибке.
Ваш hr
в соответствующих put_fullScreen
звонок должен иметь 0xC00D0FD2
NS_E_WMPOCX_NO_ACTIVE_CORE
«Запрашиваемый метод или свойство недоступны, поскольку элемент управления ActiveX проигрывателя Windows Media не был правильно активирован». указать на проблему.