情况如下:
1)我有两个顶层窗户,A和B
2)A在B前面
如何在将窗口A保持在B前面的同时将键盘焦点发送到窗口B?
答案 0 :(得分:1)
如果你不介意它不是直接的,你可以将键盘事件从顶层窗口发送到它后面的那个。当然,假设两个窗口都是由您创建的,而不是编写程序在后台悬停并读取在单独程序中使用的键盘输入。
答案 1 :(得分:1)
我假设您控制两个窗口,这是在像Linux这样的X11系统上。如果没有,那就更具挑战性了。我在一个应用程序中完成了这样的事情,这里有一些回忆。
您可能已经发现,您不能只使用gtk_widget_grab_focus()来执行此操作。这仅适用于在窗口本身具有焦点时确定窗口中的哪个窗口小部件具有焦点。
X11根据窗口层次结构,窗口管理器中的信息等确定哪个窗口获取键盘事件。但是,您可以通过GDK来获取结果,以获得所需的结果。
您必须了解GDK event propagation,并且可能会阅读一些GDK来源。但我相信,一般来说,你需要做的是:
如果窗口属于不同的应用程序,您可以查看gdk_event_send_client_message(),但我从未使用过它。
答案 2 :(得分:1)
gtk_window_set_keep_above
(a)
后跟gtk_window_present
(b)
?