0

是否可以创建一个窗口,作为另一个窗口顶部的覆盖,例如,您可以在窗口的标题栏或状态栏中显示的图标?

出于这个问题的目的,假设:

  • 该窗口是一个外国窗口(不属于我的应用程序)
  • 叠加层为 16x16 像素,具有透明背景
  • 覆盖显示在非常靠近窗口右上角的位置,并且应该相对于窗口的右上角边框保持定位。
  • 叠加层有兴趣处理鼠标左键单击而不是其他输入。
  • 叠加层不应该有输入焦点,它应该知道它何时被点击。

如果可能,怎么做?我试图创建一个窗口并将其显示在正确的位置,但我从未看到它;就好像它不存在一样。我确实得到了 Window 句柄,甚至可以将其转换为 GdkWindow 对象,但我无法看到它。

ETA:我想做的一个例子可以在网上找到,首先没有我想要做的,然后再有它。在这种情况下,请查看右侧的菜单栏。我想对任何任意应用程序都这样做,并让用户能够单击那个小图标来“停靠”窗口。

4

2 回答 2

1

窗口管理器的工作方式是获取一个新窗口并将窗口的装饰作为窗口的“父”添加到新窗口。

您可以使用 XReparent() 窗口 API 在窗口管理器的装饰窗口和现有窗口之间插入您的窗口。

于 2009-10-02T16:30:17.647 回答
0

应该可以只使用 GDK 命令来做到这一点,因为它们或多或少地映射到 Xlib 的相同调用中。也许您没有考虑到您应该以某种方式处理公开事件(那些不是发送到您的应用程序,而是发送到外国应用程序的事件)?顺便说一句,您如何将 XWindow 句柄转换为 GtkWindow?

于 2009-11-16T19:28:00.130 回答