帮酷LOGO
0 0 评论
文章标签:Active  act  Overlap  Activex  

示例图像- overlapactivex.jpg

介绍

每个HTML编写器都知道有一个问题,重叠下拉列表( <SELECT> 标记) 和 activex。 将 DIV 或者任何HTML元素置于ActiveX之上的任何努力都没有效果。 即使 z-index 比HTML元素更高,ActiveX仍然处于顶端。 原因是浏览器呈现它的内容的方式。 请参见 http://support.microsoft.com/default.aspx?scid=kb;en-us;177378

有两种类型的控件: 窗口和无窗口元素,它们在单独的平面上渲染。 所有窗口元素都在所有窗口元素之上绘制自己,尽管它们的容器的愿望。 然而,窗口元素相互遵循 z-index 属性,就像无窗口元素遵循 z-index 属性一样。

在同一个MSHTML平面上渲染所有无窗口元素,并且窗口元素在单独的MSHTML平面上绘制。 可以使用 z-index 在同一平面上操纵元素,但不能将元素与不同平面中的元素混合和匹配。 在每个平面上重新排列元素的z 索引,但窗口平面始终在无窗口平面的顶部绘制。

在大多数情况下,<OBJECT> 标记是窗口。 这就是为什么它总是保持在顶端。

解决方法

我的解决办法就像傻瓜一样简单。 如果要显示HTML元素( 一个 <DIV>,例如) 上面,则创建一个ActiveX屏幕截图,将它的保存到临时文件夹中。 finally,恢复这些更改,隐藏图像并显示 ActiveX。

实现

我使用Microsoft文章中的捕获例程,如何捕获和打印屏幕。窗体或者任何窗口插件。 然后我使用内存流将它保存到文件中。 所有这些都是在sparc中实现的,但是可以很容易地移植到 C++,因为大部分功能都在 Windows API。 ActiveX的public 函数 GetImageFileName() 负责创建屏幕截图并返回创建的文件的全名。

绑定到复选框的JavaScript操作替换过程。

安装和演示

在Zip文件中,你将找到以下内容:

  • 一个ActiveX的VB6项目: OverlapDemoControl.vbp。
  • 编译的ActiveX: OverlapDemoControl.ocx。
  • 包含 <OBJECT> 标记,<DIV> 标记和适当的JavaScript的HTML: OverlapActiveX.htm。

若要从visualbasic运行该示例,只需打开并编译项目即可。 否则,你只需使用 OverlapDemoControl.ocx。 要测试,只需单击复选框。



文章标签:act  Active  Activex  Overlap  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语