问题标签 [z-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1477 浏览

windows - 在 Windows 上,当我的子窗口的 z 顺序相对于它的同级窗口之一发生变化时,我的子窗口是否应该获得 WM_WINDOWPOSCHANGED?

我正在尝试将自定义小部件插入到 Internet Explorer 8 url 栏中,在停止和重新加载按钮旁边。这只是我个人的生产力增强剂。

IE 框架这部分的“窗口模型”是一个“地址栏根”窗口,它拥有组成 IE8 url 栏的窗口:一个编辑框、一个组合控件以及停止和重新加载按钮。

在另一个进程中,我创建了一个新的 WS_CHILD 窗口(具有自定义类名),它由 IE 的地址栏根窗口作为父级,从而使其成为编辑框的兄弟并停止/重新加载。我用 HWND_TOP 的 hwndInsertAfter 调用 SetWindowPos 以确保它出现在 urlbar 的“上方”(即“in”)。这很好用,我看到我的窗口最初是在 IE urlbar 中绘制的。

但是,当我激活 IE 窗口时,urlbar 编辑控件会跳回到我的窗口前面。我知道这是因为我仍然看到我的窗口在 urlbar 后面绘制,并且因为当我在计时器上将 ->GetTopWindow() 打印到调试控制台时,它变成了 urlbar 编辑控件的 HWND。

如果我更新我的消息循环以在 WM_PAINT 上使用 HWND_TOP 调用 SetWindowPos,情况会更好——现在当我激活 IE 窗口并移动它时,我的控件正确地停留在 urlbar 中的编辑控件上方。但是,一旦我在 IE 选项卡之间切换(更新了 IE 的 urlbar Edit 控件的文本),我的控件就会移回 Edit 控件后面。(注意:当我最大化或恢复窗口时也会发生这种情况。)

所以我的问题是:

1) 每次单击 IE 中的选项卡时,IE 是否可能有意将其 urlbar 编辑控件放回 z 顺序的顶部,或者我对 Windows 绘画和 z 顺序的工作原理的理解存在差距?我的理解是,一旦您指定子窗口的 z 顺序(最终用户无法操作),该顺序应该保持不变,直到以编程方式更改。因此,即使 IE 在选项卡选择时重新绘制其编辑控件,而我没有重新绘制或以其他方式作用于我的窗口,我的窗口仍应牢牢保持在顶部。

2) 鉴于我的窗口的 z 顺序显然正在发生变化,它不应该收到 WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED 吗?如果是这样,我至少可以响应该事件并让自己掌握在 Edit 控件之上。但是,即使当我单击选项卡时,我可以在 urlbar Edit 控件后面看到我的窗口绘画,并且即使我的调试窗口输出确认地址栏根的 GetTopWindow() 在我单击选项卡时成为 Edit 控件的 HWND ,即使我看到 WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED 在我单击选项卡时被发送到带有 HWND_TOP 的 hwndInsertAfter 的 Edit 控件,但我自己的窗口没有收到任何可以让我保持 z 顺序不变的消息。这对我来说似乎是错误的,解决它会迫使我在 IE 中运行'

谢谢您的帮助!

0 投票
0 回答
2109 浏览

python - 使用 Python Windows 扩展获取窗口 Z 顺序

有没有办法使用Python Windows Extensions获取窗口的 z 顺序?或者,有没有办法使用另一个模块来做到这一点?执行此操作的常用方法是使用GetTopWindowand GetNextWindow,但这些函数都没有出现在win32gui模块中。

目前我正在这样做,但它没有考虑到窗口的 z 顺序:

理想情况下,我想要这样的东西:(这不起作用)

但是,缺少GetTopWindowandGetNextWindow函数,所以我不能。

更新:

我想我请求帮助有点太快了。我用ctypes弄清楚了。希望其他人觉得这很有帮助。

0 投票
1 回答
952 浏览

cocos2d-iphone - 如何在 Cocos2D 中重新排序精灵

我想知道如何在触摸时更改 cocos2D 中精灵的 z 顺序。

我正在寻找的是更复杂的东西,而不是触摸时从 0 到 1 的 z 顺序更改,但是它随后从 1 更改为 2 以及从 3 更改为 4 等等。

因此,如果精灵在 z:0 上以在每次后续触摸时开始,它将上升 1。(例如 1、2、3 ...)

0 投票
2 回答
1848 浏览

java - JCombobox下拉可见性问题?

我有一个根面板(2 行,1 列),其中包含面板 P 和标签 L。P 里面有一个 JComboBox B。每当我单击 B 时,生成的下拉菜单都会显示在 L 后面。我该如何解决这个问题?我玩弄了各种各样的 setComponentZOrder() 但我无法解决这个问题。我该怎么办?

0 投票
13 回答
92136 浏览

android - 如何将视图发送到后面?如何以编程方式控制 z 顺序?

我无法将视图发送回去。在 Android 中,我们有一个类似bringToFront(), 的方法来将视图放在另一个视图的顶部。像这样,我想把视图放在上一张图片的下方。

有没有类似sendToBack()bringToBack()在Android中的任何方法。如果是这样,任何人都可以帮助我。

注意:我不想通过在布局中放置项目的顺序来控制 z 顺序,我想以编程方式控制 z 顺序。

我不想隐藏前面的视图,我只想让它们位于正在移动的视图后面。

0 投票
17 回答
224231 浏览

android - 如何让一切眼前一亮?

我有活动和很多小部件,其中一些有动画,并且由于动画,一些小部件正在移动(翻译)另一个。例如,文本视图在一些按钮上移动。. .

现在问题是我希望按钮总是在前面。当文本视图移动时,我想移动到按钮后面。

我无法做到这一点,我尝试了我所知道的一切,“bringToFront()”肯定行不通。

请注意,我不想通过将元素放置到布局的顺序来控制 z 顺序,因为我根本做不到 :),布局很复杂,我不能将所有按钮都放在布局的开头

0 投票
1 回答
181 浏览

c# - 表格在未最大化时始终显示?

我正在开发一个 C# 表单,它是一个倒数计时器。当表单最大化时,它会很好地填满整个屏幕。但是,当单击最大化按钮时,我已将其配置为更小。但是,有没有一种方法可以设置 Z 顺序,以便它始终显示在较小尺寸的版本中。(即 - 如果幻灯片正在运行(通过 F5),它将占据整个屏幕,但使用我的小倒数计时器,我希望它具有 0 z 顺序,以便它仍会显示,然后作为 powerpoint 的倒计时运行(请注意,这只是我希望它始终显示在较小版本中的一个示例。

我已经加入了大小更改事件,然后使用了以下内容:

做一些事情(即如果在最大化模式下更改背景图像。在此的其他方面,如果可能的话,我想设置 z 顺序属性。

有谁知道可以帮助我实现这一目标的代码?

0 投票
2 回答
2519 浏览

javascript - 更改 div 的 z-index 并在鼠标悬停时具有淡入淡出效果

我有 4 张图像堆叠在一起,见下文: http://img148.imageshack.us/img148/9096/48404002.jpg

我正在努力实现两件事:

  1. 当鼠标悬停在背景中的图像上时,该图像应以淡化效果出现在前景中。每个图像下方还有不同的文本,该文本应该出现在前台。(那里不需要褪色)

    结果应该是这样的: http://img837.imageshack.us/img837/5663/58906919.jpg

  2. 每隔 10-15 秒(无需用户输入),右侧的下一张图像应自动淡入。

从技术上讲,我考虑将每个图像和文本放入一个单独的 div 中,并使用 z-order。使用 jquery 可以实现淡化效果,但不幸的是,我以前没有使用过。

非常感谢任何示例代码、特定帮助或指针。

谢谢!

0 投票
0 回答
398 浏览

c# - 多线程 MDI 类 Windows 应用程序的问题

我有一个“可插入”C# 应用程序,其中每个插件都在它自己的线程上运行并创建它自己的窗口,但给人一种单一 MDI 应用程序的整体错觉。

例如,窗口按 Z 顺序排列,如下所示:

  • MainHeaderForm
    • PluginA_Form
      • PluginB_Form
        • PluginC_Form
          • 背景表格

... MainHeaderForm 始终位于顶部,BackgroundForm 必须始终位于堆的底部。但是,其他(外部)窗口不应该出现在此应用程序的 Z 顺序中(从而打破 MDI 错觉)。我总是希望按此顺序保持这些窗口,并且(在可能的情况下)在显示这些窗口时将这组窗口显示在所有其他窗口之上。

我将插件放在单独的线程上的原因是,如果它们变得无响应,它们可以被强制删除/杀死。据我所知,如果不关闭所有插件,这是无法在单个线程上完成的。

但是,我遇到了一些问题(可能是由于时间问题),有时插件窗口出现在 BackgroundForm 和其他奇怪的东西后面。

我正在维护来自 GUI 线程的整体 Z 顺序,并使用“调用”来让 Windows 执行 SetWindowPos。但是,如上所述,这可能是在进行阻塞调用(?),这可能会导致一些问题。

否则,功能就如你所愿——只是显示问题。

如果有人有任何额外的指导,我将不胜感激。

非常感谢

0 投票
1 回答
1595 浏览

wpf - WPF OnRender Z-Order 控件?

我有一个自定义面板,它实现了它的孩子的一个很好的自定义布局。我想在面板中添加一些额外的图形,因此覆盖 OnRender 以添加额外的矩形等。它工作得很好,除了 OnRender 似乎只添加到背景中。有没有办法让你的 OnRender 绘图在孩子们的上面?

一个示例面板...

...以这种方式使用...