Встраивание Windows Media Player в MFC

Я встраиваю элемент управления 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
}

1

Решение

MSDN говорит:

Чтобы полноэкранный режим работал правильно при встраивании элемента управления проигрывателя 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 не был правильно активирован». указать на проблему.

1

Другие решения


По вопросам рекламы [email protected]