在我使用 FireBreath 和 OpenGL 编写完浏览器插件并使用对象标签嵌入插件后,我尝试在插件之上覆盖各种 HTML 元素。不幸的是,无论我如何尝试,标签和插件图形始终位于页面上任何其他 HTML 元素的顶部。
据我所知,flash 插件允许 HTML 覆盖,如下所示:
<param name="wmode" value="transparent">
有没有通用的方法可以在 或 标签上启用 HTML 覆盖?如果没有,是否有办法在 NPAPI/ActiveX 插件上启用覆盖,或者 FireBreath 是否以某种方式支持此功能?
自从我开始编程以来,StackOverFlow 一直是我的主要资源,非常感谢大家!
有两种类型的插件;有窗和无窗。 FireBreath 确实支持无窗口插件(从无窗在你的插件类中运行。如果您使用无窗口插件,那么您可以在插件上覆盖 HTML。如果你做一个窗口插件,那么你就不能。
然而,这并不像听起来那么容易。如果您仔细阅读,您会发现 wmode=transparent 下的 flash 性能远不如普通 wmode 下的那么好,原因是为了无窗口绘制,您必须仅在浏览器指示时进行绘制。幸运的是,您可以要求浏览器告诉您重绘(在 FireBreath 中,通过在您将作为窗口获得的 PluginWindowlessWin 对象上调用 InvalidateWindow)。
不幸的是,在无窗口绘图模式下,您不会得到 hWND,只有 hDC,并且它仅在绘图事件(FireBreath 中的 RefreshEvent)期间有效。据我所知,您无法在 hDC 上创建可能会在绘制调用之间更改或消失的 opengl 绘图上下文,因此我看到 opengl 插件在 Windows 上使用无窗口绘图的唯一方法是在屏幕外绘制,然后使用 GDI 将位传输到 hDC。
下面是一个示例,它将使用任一类型的绘图(有窗口或无窗口)绘制原始位图,这可以帮助您巩固对我上面试图解释的内容的理解:https://gist.github.com/1068352
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)