Создание "наложения" на окно - c


0

Можно ли создать окно, которое действует как наложение поверх другого окна, скажем, значок, который можно отобразить в строке заголовка окна или в строке состояния?

Предположим для целей этого вопроса, что:

  • Окно - это внешнее окно (не принадлежащее моему приложению).
  • Наложение 16x16 пикселей и имеет прозрачный фон
  • Оверлей отображается очень близко к верхнему праву окна и должен оставаться в позиции относительно верхней границы окна.
  • Наложение заинтересовано в обработке щелчка левой кнопкой мыши и никакого другого ввода.
  • Наложение никогда не должно иметь фокус ввода, он должен знать только, когда он был нажат.

Если это возможно, как это можно сделать? Я попытался создать окно и отобразить его в нужном месте, но я его никогда не видел; это как будто этого не существует. Я получаю дескриптор Window и могу даже преобразовать его в объект GdkWindow, но я не могу дойти до него.

ETA. Пример того, что я хочу сделать, можно найти в Интернете, сначала без того, что я пытаюсь сделать и снова с ним. В этом случае посмотрите на строку меню справа. Я хотел бы сделать это для любого произвольного приложения и пользователь сможет щелкнуть по этой маленькой иконке, чтобы "прикрепить" к окну.

Источник
  •  71
  •  2
  • 21 апр 2020 2020-04-21 06:21:18

2 ответа

0

Это должно быть возможно сделать, используя только команды GDK, потому что они более или менее сопоставляются с теми же вызовами Xlib. Может быть, вы не принимаете во внимание, что вам следует каким-то образом обрабатывать события, связанные с событиями (те, которые отправляются не в ваше приложение, а на иностранное)? Кстати, как именно вы конвертируете дескриптор XWindow в GtkWindow?

  • 21 апр 2020 2020-04-21 06:21:19
1

Как работает оконный менеджер, выбирая новое окно и добавляя украшение окна как окно "родительский" в новое окно.

Вы можете вставить свое окно между окном оформления оконного окна и существующим окном, используя окно XReparent() api.

  • 21 апр 2020 2020-04-21 06:21:19