- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在 ActiveX 控件中呈现视频(而不是在弹出的 DirectShow 窗口中)。我有:
IID_IVMRWindowlessControl
IID_IVMRFilterConfig9
CLSID_VideoMixingRenderer9
我想设置 WindowLess 模式,但我不知道如何获得 HWND 的...,确切地说,是什么? IEFrame、HTML 元素?
hr = pWc->SetVideoClippingWindow(???);
谁有一些提示?
问候。
最佳答案
首先,将其添加到 ActiveX 控件的构造函数中:
// this seemingly innocent line is _extremely_ important.
// This causes the window for the control to be created
// otherwise, you won't get an hWnd to render to!
m_bWindowOnly = true;
您的 ActiveX 控件将有一个名为 m_hWnd 的成员变量,您可以将其用作呈现目标。如果 m_bWindowOnly 变量设置为真,ActiveX 控件将不会创建自己的窗口。
最后,选择您的渲染器(例如 VMR9)
CRect rcClient;
CComPtr<IBaseFilter> spRenderer;
CComPtr<IVMRWindowlessControl9> spWindowless;
// Get the client window size
::GetClientRect(m_hWnd, rcClient);
// Get the renderer filter
spRenderer.Attach( m_pGraph->GetVideoRenderer() );
if( ! spRenderer )
return E_POINTER;
spWindowless = spRenderer;
if( spWindowless )
{
spWindowless->SetVideoClippingWindow( m_hWnd );
spWindowless->SetVideoPosition(NULL, rcClient);
spWindowless.Release();
}
spRenderer.Detach();
请注意,我的图形对象是一个自定义对象,而 GetVideoRenderer() 是我自己的函数之一 - 它返回一个 IBaseFilter*。
我花了很长时间才找到这个。 ATL 的文档很少,这很遗憾,因为它是一项出色的技术。无论如何,希望这对您有所帮助!
关于c++ - ActiveX HWND、DirectX WindowLess 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3865663/
我已经下载了 ComponentOne Silverlight 控件,并且正在尝试将 HTMLHost 控件添加到我的一个 UserControl 中。当我运行应用程序时,我收到消息 To use t
我将我的开发机器升级到 Windows 7,并将我的项目升级到 .NET 3.5。当我尝试运行该项目时,我现在收到此错误: Unable to get the window handle for th
我想在 ActiveX 控件中呈现视频(而不是在弹出的 DirectShow 窗口中)。我有: IID_IVMRWindowlessControl IID_IVMRFilterConfig9 CLSI
我之前已经问过两个关于这个的问题,每个帖子都有一些我尝试过的解决方案,但问题仍然存在。 我的第一个问题是:为什么无窗口的 Activex 不返回句柄。建议是“更改创 build 置,使无窗口激活关闭,
关于以下website ,当我单击右上角登录的下拉菜单时,它显示在 silverlight map 后面。我不能使用无窗口模式,因为这会禁用 map 上的滚动和菜单。我试过将 z-index 放在任何
我是一名优秀的程序员,十分优秀!