PDA

Показать полную графическую версию : TWindowsMediaPlayer fullScreen


morebeauty
11-10-2013, 09:59
Доброго дня вам.

Программирую в Borland C++ Builder 6
Система Windows 7 x64

Добавил ActiveX компонент TWindowsMediaPlayer
Все работает, но не могу программно включить полный экран. Свойства fullScreen просто НЕТ! Хотя должно быть.
На соседнем компе в дельфи оно есть. Гуглил, везде используется свойство fullScreen.
Шарил по библиотекам. В WMPLib_TLB.h нашел нужное мне свойство в интерфейсе IWMPPlayer3. Но как обратиться к нему непосредственно из экземпляра TWindowsMediaPlayer не знаю.

Что за беда такая? Может кто подскажет, как реализовать его? Нужно именно программно.

Grabber2006
11-10-2013, 14:59
К сожалению, у меня Builder'а нет. Но по логике должно быть так:

MyWMP -> fullScreen = true;

morebeauty
13-10-2013, 14:43
Да, должно быть, но нету!!
Может мне кто нибудь дасть свои библиотеки WMPLib_TLB и WMPLib_OCX?

morebeauty
15-10-2013, 06:48
Появились новые данные.
Порылся в WMPLib_TLB и WMPLib_OCX библиотеках и отыскал, что по умолчанию используется интерфейс IWMPCore, в котором нет реализации fullScreen.
Зато она есть, например, в IWMPPlayer.
На сайте MSDN нашел инфу, что между интерфейсами можно переключаться при помощи QueryInterface.
Вот написал код процедуры, которая подключается к нужному интерфейсу и должна включить полный экран.
TCOMIWMPPlayer __if;
GUID __id;
__id.Data1=0x6BF52A4F;
__id.Data2=0x394A;
__id.Data3=0x11D3;
__id.Data4[0]=0xb1;
__id.Data4[1]=0x53;
__id.Data4[2]=0x00;
__id.Data4[3]=0xc0;
__id.Data4[4]=0x4f;
__id.Data4[5]=0x79;
__id.Data4[6]=0xfa;
__id.Data4[7]=0xa6;
_ASSERTE(MP1->DefaultDispatch);
MP1->DefaultDispatch->QueryInterface(__id,(LPVOID*)&__if);
__if->fullScreen=true;
Ошибок нет, но и полный экран не включается.
Проверил я то, что подключение к интерфейсу прошло, заменив fullScreen=true на controls->stop(). Проигрывание останавливалось при выполнении процедуры. То есть я на верном пути, но почему не включается полный экран???

morebeauty
15-10-2013, 07:39
Проблема решена.
__if->fullScreen=true;
нужно заменить на
__if->fullScreen=-1;

Ох уж эти причуды мелкософта...




© OSzone.net 2001-2012