Re[2]: DirectShow-фильтр и окно видеоплеера
От: Аноним  
Дата: 29.07.04 06:26
Оценка:
Здравствуйте, romson, Вы писали:

R>Здравствуйте, justicar, Вы писали:


J>>Господа, буду очень признателен, если кто-нибудь поможет решить следующую проблему. Так получилось, что написаному мной DirectShow-фильтру необходимо знать, в какое окно в конце концов попадает идущий через мой фильтр видеопоток (в идеале было бы хорошо получить hwnd окна). Порылся в DirectX-хелпе, но ничего полезного на эту тему не нашел. Кто-нибудь знает, что тут можно сделать?


J>>Заранее благодарен.

J>>Макс.

R>Сам не пробовал, но предположительно это делается так:


R>
R>IVideoWindow *pVidWin = NULL;
R>m_pGraph->QueryInterface(IID_IVideoWindow, (void**)&pVidWin);
R>HWND hWndOwner = NULL;
R>pVidWin->get_Owner((OAHWND)&hWndOwner);
R>HWND hWndVideo = FindWindowEx(hWndOwner, NULL, "VideoRenderer", NULL);
R>


Ну да... но так некрасиво. Тем более что окно будет называться ActiveMovie. Нет, раз уж фильтру потребовался hwnd, у меня серьезные подозрения, что вместо этого фильтра должен быть plug-in presenter. Если это очень прикладной фильтр (т.е. не требуется, чтобы graphedt автоматически все в нем настраивал), и если он применяется конкретной программой, тогда нужно:
1. Инициализировать VMR в windowless mode (когда окно видеовывода принадлежит и управляется клиентским приложением)
2. Фильтр должен имлементировать какой нибудь свой интерфейс (что-нибудь вроде IMyFilterConfig с методом SetWindowHandle)

а вот лезть напрямую к handle окна, особенно если это спрятанное окно VMR -- не нужно, последствия непредсказуемы.

Что делает Ваш фильтр?

Dennis Evseev
SDE @ WMDG Windows Media
Microsoft corp.
Note: this message is a private opinion of a sender and not the one of Microsoft corp. This message tranfers no rights and bears no responsibility. Бла бла.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.