Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   TWindowsMediaPlayer fullScreen (http://forum.oszone.net/showthread.php?t=269732)

morebeauty 11-10-2013 09:59 2232492

TWindowsMediaPlayer fullScreen
 
Доброго дня вам.

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

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

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

Grabber2006 11-10-2013 14:59 2232697

К сожалению, у меня Builder'а нет. Но по логике должно быть так:

MyWMP -> fullScreen = true;

morebeauty 13-10-2013 14:43 2233649

Да, должно быть, но нету!!
Может мне кто нибудь дасть свои библиотеки WMPLib_TLB и WMPLib_OCX?

morebeauty 15-10-2013 06:48 2234634

Появились новые данные.
Порылся в 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 2234644

Проблема решена.
__if->fullScreen=true;
нужно заменить на
__if->fullScreen=-1;

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


Время: 10:53.

Время: 10:53.
© OSzone.net 2001-