我想把视频显示在两个窗口该怎么做?
一个显示窗口就是把IVideoWindow 指针和graph绑定,两个窗口就不知这么弄了,两个窗口句柄这么和graph的指定的rengder Filter对应?

解决方案 »

  1.   

    Infinite Pin Tee Filter.
      

  2.   

    不行,
    我分了两个流,其中设置窗口函数如下:
    bool CGraphUtility::SetDisplayWindow(CWnd * pWnd)
    {
    m_pParentWnd=pWnd;
    HRESULT hr  = m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVideoWindow);
    if (pVideoWindow)
    {
    pVideoWindow->put_Visible(OAFALSE);
    pVideoWindow->put_Owner((OAHWND)pWnd->m_hWnd); RECT windowRect;
    ::GetClientRect(pWnd->m_hWnd, &windowRect);
    pVideoWindow->put_Left(0);
    pVideoWindow->put_Top(0);
    pVideoWindow->put_Width(windowRect.right - windowRect.left);
    pVideoWindow->put_Height(windowRect.bottom - windowRect.top);
    pVideoWindow->put_WindowStyle(WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
    pVideoWindow->SetWindowPosition(0,0,windowRect.right - windowRect.left,windowRect.bottom - windowRect.top);
    pVideoWindow->put_MessageDrain((OAHWND) pWnd->m_hWnd);
    if (pWnd->m_hWnd != NULL)
    {
    pVideoWindow->put_Visible(OATRUE);
    }
    else
    {
    pVideoWindow->put_Visible(OAFALSE);
    }
    pVideoWindow->Release();
    pVideoWindow=NULL;
    return true;
    }
    return false;
    }
    我创建graph的时候调用了两次SetDisplayWindow,传的参数分别是两个窗口的句柄,但运行时只有一个窗口中有视频,另外窗口没有。而且会弹出dshow自带的那个视频窗口。也就是说只有一个窗口与视频绑定成功了,另外一个视频流使用的dshow自带的视频窗口。