Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc 如何设置FilterGraph渲染器的所有者?_Mfc_Directshow - Fatal编程技术网

Mfc 如何设置FilterGraph渲染器的所有者?

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

我有一个CView,我想主持一个DirectShow渲染器

我没有编写原始代码,我只是清理并将代码移动到VS2005。这就需要升级某些第三方工具,因此我试图在不完全了解DX/DirectShow的情况下对代码进行一些更改

问题是我的应用程序在运行时挂起

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中的新显示驱动程序模式把它搞砸了。)不管怎样,一旦我向主应用程序窗口发送了一条消息并从那里开始视频捕获,一切似乎都正常了