sashasan
Шейдер ниндзюцу
|
|
| Поправил: sashasan 20 Сен 2011 12:15 #1
|
Воспроизвожу видео
vwindow put_Owner, pWindow, hwnd
vwindow put_WindowStyle, pWindow, WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN
vwindow SetWindowPosition, pWindow, clientwindow.left, clientwindow.top, clientwindow.right, clientwindow.bottom
mctrl Run, pControl
Видео воспроизводится в окне нормально. Проблема возникает если поменять режим воспроизведения на полнооэкранное и обратно в оконный режим. Собственно во весь экран воспроизводится нормально, а после когда возвращаю в оконный то в место видео черный экран а звук идет. Если снова нажать полный экран то видео появляется в полном экране возвращаю черный экран. Что я не так делаю не пойму.
Также заметил, что при возврате с полноэкранного режима в оконный окно отделяется от окна в котором воспроизводится как будто vwindow put_WindowStyle, pWindow, WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN отменилась.
Делаю так:
cmp eax, VK_F5 ;полноэкранное
jne @F
vwindow get_MessageDrain, pWindow, ADDR drain
vwindow put_MessageDrain, pWindow, hwnd
vwindow put_FullScreenMode, pWindow, 0ffffffffh
@@:
cmp eax, VK_F6 ;вернутся в оконный режим.
jne @F
vwindow put_MessageDrain, pWindow, drain
vwindow put_FullScreenMode, pWindow, 0
@@:
|
sashasan
Шейдер ниндзюцу
|
|
| Поправил: sashasan 23 Сен 2011 00:58 #3
|
Спасибо за ответ
Но это не помогло
После долгих проб и ошибок :) пришёл к такому решению:
cmp eax, VK_F6
jne @F
vwindow put_FullScreenMode, pWindow, -1 ;OATRUE
@@:
cmp eax, VK_F5
jne @F
vwindow put_FullScreenMode, pWindow, 0 ;OAFALSE
vwindow put_Owner, pWindow, NULL
vwindow put_Owner, pWindow, hwnd
invoke SetFocus,hwnd
@@:
Так все норму ль воспроизводится. Работает сие так клавиша F6 переключает видео в полный экран,а при нажатии кл. F5 переключает видео в экранный режим и следующий вызов обнуляет родителя и насколько я понял стирает очередь сообщений окну видео проигрывателя следующая функция восстанавливает родителя с чистеньким листом событий после чего нужно вернуть фокус окну которому принадлежит проигрыватель Dshow.
Как по другому избежать данного глюка не знаю.
|