Mfc 如何设置FilterGraph渲染器的所有者?
我有一个CView,我想主持一个DirectShow渲染器 我没有编写原始代码,我只是清理并将代码移动到VS2005。这就需要升级某些第三方工具,因此我试图在不完全了解DX/DirectShow的情况下对代码进行一些更改 问题是我的应用程序在运行时挂起Mfc 如何设置FilterGraph渲染器的所有者?,mfc,directshow,Mfc,Directshow,我有一个CView,我想主持一个DirectShow渲染器 我没有编写原始代码,我只是清理并将代码移动到VS2005。这就需要升级某些第三方工具,因此我试图在不完全了解DX/DirectShow的情况下对代码进行一些更改 问题是我的应用程序在运行时挂起 hr = gcap.pFg->QueryInterface(IID_IVideoWindow, (void **)&gcap.pVW); [trimmed some code] gcap.pVW->put_Owner((OAH
hr = gcap.pFg->QueryInterface(IID_IVideoWindow, (void **)&gcap.pVW);
[trimmed some code]
gcap.pVW->put_Owner((OAHWND) m_pDockWnd->GetSafeHwnd()); // We own the window now
m_pDockWnd是CView。我可以在预览模式下执行此操作,但在捕获模式下则不行。在捕获模式下,它会挂起应用程序
如果我不拥有渲染窗口,就没有问题(尽管捕获窗口属于桌面,这对我来说不起作用)
此外,当捕获窗口为桌面所有时,它会显示一个忙碌的光标——可能当时它也不工作,但至少不会挂起应用程序。我所说的挂起是指应用程序不响应用户输入,但后台线程继续运行
更新:我们使用的是旧版本的DirectX(2006年8月)。我编译/链接了与Vista SDK打包的DirectShow内容,并。。。。没有骰子。我已经有了解决这个问题的办法
视频流是从没有消息泵的线程开始的,这导致视频窗口变得没有响应。(我想XP更能容忍这一点,也许Vista中的新显示驱动程序模式把它搞砸了。)不管怎样,一旦我向主应用程序窗口发送了一条消息并从那里开始视频捕获,一切似乎都正常了 我对此有一个决议 视频流是从没有消息泵的线程开始的,这导致视频窗口变得没有响应。(我想XP更能容忍这一点,也许Vista中的新显示驱动程序模式把它搞砸了。)不管怎样,一旦我向主应用程序窗口发送了一条消息并从那里开始视频捕获,一切似乎都正常了