Не работает IVideoWindow
От: Аноним  
Дата: 18.06.09 16:05
Оценка:
Ситуация такая...

Есть движок который умеет работать с DirectShow (стротиь графы, добавлять/удалять фитры и т.д.). Проект сделан как DLL с использованием СОМ.

Есть другой проект "ЮнитТест". В котором на диалоге нужно отобразить видео.
Для отобрадения видео, создается отдельное окно и запоминается его HWND (m_hwndVideo).

потом, по-идее, идет следующий код (из ЮнитТеста):

HRESULT hr = E_FAIL;
m_spIVideoEngine->CreateGraph();     // строим граф

CComPtr<IUnknown> spIUnknown;
hr = m_spIVideoEngine->GetIVideoWindow(&spIUnknown);   // берем IUnknown который вернул движок 
hr = spIUnknown->QueryInterface(IID_IVideoWindow, (void**) &m_spIVideoWindow);

 CRect m_render_rect;
 ::GetWindowRect(m_hwndVideo, &m_render_rect);
 hr = m_spIVideoWindow->put_Owner((OAHWND)m_hwndVideo);
 hr = m_spIVideoWindow->put_WindowStyle(WS_CHILD);
 hr = m_spIVideoWindow->SetWindowPosition(0, 0, m_render_rect.Width(), m_render_rect.Height());
 hr = m_spIVideoWindow->put_MessageDrain((OAHWND)m_hwndVideo);
 hr = m_spIVideoWindow->put_Visible(-1);

 m_spIVideoEngine->Start();



В движке получаем IVideoWindow
STDMETHODIMP CVideoEngine::GetIVideoWindow(IUnknown** ppVideoWindow)
{
 return m_spIGraphBuilder->QueryInterface(IID_IVideoWindow, (void**)ppVideoWindow);
}



все вроде бы ок, НО
уже начиная с медода m_spIVideoWindow->put_Owner возвращает ошибку
E_NOINTERFACE

Может кто знает в чем причина?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.