Возможно, вопрос простой, но ответа на него я пока не нашел.
В отдельном от основного потоке рендерится AVI-шка через соответствующие интерфейсы FilterGraph. Окно выводится в pWindow->put_FullScreenMode(OAFALSE). Затем окно должно прятаться и по запросу вновь разворачиваться на FullScreen. Вроде все работает. Проблема возникает, если во время видимости окна юзер нажмет Alt-F4. Программа работает нормально, но восстановить воспроизведение в окне так и не удается. Объясните, плз, что нужно сделать, чтобы закрытое руками окно опять открылось и воспроизведение продолжилось.
Здравствуйте, Rett Pop, Вы писали:
RP>Hi, All!
RP> Возможно, вопрос простой, но ответа на него я пока не нашел. RP> В отдельном от основного потоке рендерится AVI-шка через соответствующие интерфейсы FilterGraph. Окно выводится в pWindow->put_FullScreenMode(OAFALSE). Затем окно должно прятаться и по запросу вновь разворачиваться на FullScreen. Вроде все работает. Проблема возникает, если во время видимости окна юзер нажмет Alt-F4. Программа работает нормально, но восстановить воспроизведение в окне так и не удается. Объясните, плз, что нужно сделать, чтобы закрытое руками окно опять открылось и воспроизведение продолжилось.
RP>WBR, Rett Pop.
Можно с помощью IVideoWindow::put_MessageDrain перевести сообщения о нажатии в своё окно, отлавливать там Alt+F4 и выходить из полноэкранного режима корректно, т.е. путём вызова put_FullScreenMode(OAFALSE), либо не обрабатывать это нажатие вообще.
Здравствуйте, romson, Вы писали:
RP>> В отдельном от основного потоке рендерится AVI-шка через соответствующие интерфейсы FilterGraph. Окно выводится в pWindow->put_FullScreenMode(OAFALSE). Затем окно должно прятаться и по запросу вновь разворачиваться на FullScreen. Вроде все работает. Проблема возникает, если во время видимости окна юзер нажмет Alt-F4. Программа работает нормально, но восстановить воспроизведение в окне так и не удается. Объясните, плз, что нужно сделать, чтобы закрытое руками окно опять открылось и воспроизведение продолжилось.
R>Можно с помощью IVideoWindow::put_MessageDrain перевести сообщения о нажатии в своё окно, отлавливать там Alt+F4 и выходить из полноэкранного режима корректно, т.е. путём вызова put_FullScreenMode(OAFALSE), либо не обрабатывать это нажатие вообще.
Проблема в том, что у меня нет своего окна. И создавать его сильно нежелательно.
Пока вышел из положения так: в потоке запускается проигрывание файла, обрабатваются сообщения графа, и в случае прерывания воспроизведения (закрытия окна) поток прерывается. При следующем запуске все интерфейсы DX переинициализируются и поток запускается заново. Если этого не делать, то выводимое окно содержит последний перед прерыванием кадр файла. Хотелось бы избежать этой повторной переинициализации.