видео — Почему методы IVideoWindow не работают? (C ++ DirectShow)

вчера я спросил этот Вопрос о программировании DirectShow и в итоге смог решить проблему самостоятельно. После решения возникла другая проблема: когда я воспроизводил видео, оно всплывало в другом окне, и я хотел бы отобразить его в моем окне hWnd. Кроме того, я хотел бы, чтобы мое видео воспроизводилось в полноэкранном режиме, и поэтому я набрал этот код:

IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
IVideoWindow* window = NULL;HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
return -1;
}hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
if (FAILED(hr))
{
return -1;
}

hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
if (FAILED(hr)) {
MessageBoxW(GetActiveWindow(), L"Errore IMediaControl", L"Attenzione", MB_ICONERROR);
return -1;
}

hr = pGraph->QueryInterface(IID_IVideoWindow, (void **)&window);
if (FAILED(hr)) {
MessageBoxW(GetActiveWindow(), L"Errore I video window", L"Attenzione", MB_ICONERROR);
return -1;
}

window->put_Owner((OAHWND)GetActiveWindow());
window->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_MAXIMIZEBOX);
RECT rc;
window->put_FullScreenMode(OATRUE);
window->HideCursor(OATRUE);

hr = pGraph->QueryInterface(IID_IMediaEvent, (void**)&pEvent);
if (FAILED(hr)) {
MessageBoxW(GetActiveWindow(), L"Errore IMediaEvent", L"Attenzione", MB_ICONERROR);
return -1;
}hr = pGraph->RenderFile(L"C:\\Users\\Chuck norris\\Desktop\\Equilibrium.avi", NULL);

if (FAILED(hr)) {
MessageBoxW(GetActiveWindow(), L"Errore IMediaControl", L"Attenzione", MB_ICONERROR);
return -1;
}
else {
hr = pControl->Run();
}

window->Release();
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();

но все же, даже если все будет хорошо, я не достигну желаемых результатов. Я даже пытался проверить, работают ли методы IVideoWindow, поставив

window->HideCursor(OATRUE);

но мой курсор все еще появляется, и даже другие методы не будут иметь никакого эффекта.
Что может вызвать это странное поведение, и как я могу решить?

Заранее спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]