Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

2
12
Не в сети
Сообщений: 2841
Благодарностей: 250
Предупреждений:
Из: Kazakhstan Караганда
Род занятий: ИТ

Что интересно - WMP обновляет свое окно, только если проигрывается видео. А если проигрывается музыка и включена визуализация, то нет.

#171108   | 02.07.09 22:55
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Хм, действительно. Наверно обновление присвоено только форме с видео, а всё остальное статично?

#171109   | 02.07.09 23:13
Не в сети
Сообщений: 2109
Благодарностей: 298
Предупреждений:
Из: Russia Екатеринбург
Род занятий: IT

Что интересно, если у нас на форме имеется динамический контент (например, видео), то он будет отображаться в динамике.


page.php?id=11453
То есть WMP показывает не свое окно (как обычный плейер), а миниатюру

   WindowsFormsExtensions.SetThumbnailClip(this, new Rectangle(new Point(0, 0), Size));


поэтому и показывается видео.

#171124   | 03.07.09 06:07
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Дело в том что видео проигрывается и при виде аэропик, при котором показывается всё окно плеера в натуральный размер.

#171131   | 03.07.09 09:40
Не в сети
Сообщений: 2109
Благодарностей: 298
Предупреждений:
Из: Russia Екатеринбург
Род занятий: IT

ProVal, еще раз:
если программа не поддерживает миниатюры, то в аэропике показывается окно программы: если оно не свернуто - показывается то что там есть, если свернута - показывается состояние окна на момент сворачивания

если программа поддерживает миниатюры, то в аэропике показывается то, что заложено в программе.

#171137   | 03.07.09 10:50
Не в сети
Сообщений: 17
Благодарностей: 3
Предупреждений:
Из: ---
Род занятий:

Johny-electric, ProVal, на этом сайте публикуется цикл статей о программировании возможностей таскбара. Lico привел пару ссылок. WMP вместо миниатюры предоставляет собственный миниинтерфейс.
Хотя, в случае с проигрыванием видео, думаю, WMP ничего специального не делает. Видео выводится на экран с помощью специального рендерера (оверлей, WMR, EVR и т.п.).
Обычные окна, когда хотят обновиться, ставят в очередь сообщение WMPAINT, а реальная отрисовка производится при обслуживании этого сообщения в порядке очереди. При минимизации окна, Винда просто подавляет эти сообщения, что бы приложение не тратило ресурсы системы на отрисовку невидимого. После восстановления окна, Винда шлет приложению WMPAINT на обновление всей площади окна.
Рендерер обновляет часть экрана в реальном времени и не пользуется очередью сообщений. Например, оверлей рендерит изображение сразу в видеопамять. А EVR (именно его использует WMP в Висте и 7) рендерит в DirectDraw поверхность. DWM весь рабочий стол "собирает" из таких DirectDraw поверхностей. По сути, рабочий стол - это 3-х мерная модель (хотя и выглядит она плоской), где текстурами являются те самые DirectDraw поверхности. При этом, финальный рендеринг рабочего стола производится непрерывно в реальном времени. Если какая-то из "текстур" изменила свое содержимое, то это сразу же отображается на экране.
Таким образом, приложению вообще не нужно обновлять свое окно для вывода видео. И это свойство распространяется на все копии "результата работы рендерера".

#171138   | 03.07.09 11:03
Не в сети
Сообщений: 3329
Благодарностей: 391
Предупреждений:
Из: Russia Усть-Илимск
Род занятий: Электромонтёр

Вот реальный пример реализации прогресс бара и кнопок управления в эскизе супербара.

#171140   | 03.07.09 12:05
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Johny-electric, ага. Это я тоже хотел, но это совсем другая тема. Мне нужно обновление при аэропике. Тоесть вот:
У меня свернут плеер, музыка играет, я навожу мышей на миниатюру и в аэропике все открытые окна выпадают в осадок, а окно плеера всплывает. Так вот оно-то всплыло, но не обновляется, тоесть висит просто как картинка до тех пор пока я его не разверну. А надо сделать так, чтобы при этом же сценарии окно работало (точнее отображалось) так, будто оно не свернуто, тоесть с анимацией.

Причем нужно узнать именно как реализовать это в самой программе. Зачем мне это надо? Просто хочу объяснить Артёму (автору аимпа), чего я от него хочу. И желательно сразу приблизительный рецепт как это сделать. Вот и ищу по инету рецепт, никак найти не могу.

#171164   | 03.07.09 17:15
Не в сети
Сообщений: 2109
Благодарностей: 298
Предупреждений:
Из: Russia Екатеринбург
Род занятий: IT

ProVal, так вот тут же написано как сделать page.php?id=11438

#171189   | 03.07.09 20:36
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Да, но там вроде не указывается, работает ли этот метод в случае свернутого приложения.

#171205   | 03.07.09 21:10
Не в сети
Сообщений: 2109
Благодарностей: 298
Предупреждений:
Из: Russia Екатеринбург
Род занятий: IT

ProVal, еще раз... там описывается миниатюра, которая показывается в любом случае, хоть свернуто, хоть не свернуто.

#171208   | 03.07.09 21:14
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Чёрт... да триста лет ненужна мне миниатюра. мне нужно окно свернутого приложения, всплывшее в аэропике. Сколько раз повторять.
зы. хотя если оно таки работает так как мне надо, то это гуд.

#171210   | 03.07.09 21:17
Не в сети
Сообщений: 2109
Благодарностей: 298
Предупреждений:
Из: Russia Екатеринбург
Род занятий: IT

ProVal, еще раз... миниатюра - это часть окна приложения, как свернутого, так и нет. Частью может быть как часть окна, так и полностью всё окно.

#171223   | 03.07.09 21:50
Не в сети
Сообщений: 3329
Благодарностей: 391
Предупреждений:
Из: Russia Усть-Илимск
Род занятий: Электромонтёр

Опаньки, в бета-версиях (1.5.х) Daum PotPlayer в превьюшке крутится видео даже когда плеер свёрнут! Прямо как в WMP12, только кнопок управления побольше.

Причём, при наведении курсора на превьюшку появляется окно плеера не со статичной картинкой, какой он был на момент сворачивания, а в нём крутится видео. Вот только элементы управления остаются "зависшими" пока не развернёшь плеер нормально.

#193853   | 12.07.10 10:21
Не в сети
Сообщений: 225
Благодарностей: 5
Предупреждений:
Из: Belarus Минск
Род занятий: Банковский служащий

А если попробывать банально? (на примере Delphi)
поместить на форму TIMER сделать интервал 10 мс и в процедуре написать

VideoFrame.Update

где VideoFrame - объект на который выводится видео (например Panel)

может сработает?

#193884   | 13.07.10 01:31
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.069 секунд (Общее время SQL: 0.048 секунд - SQL запросов: 98 - Среднее время SQL: 0.00049 секунд))
Top.Mail.Ru