如何在gtk3中获得一个活动的gtk窗口?
问题描述:
我曾尝试这样的:如何在gtk3中获得一个活动的gtk窗口?
gdk_screen_get_active_window(gdk_screen_get_default());
但它返回GDK窗口,这不是我想要的。
原因需要GTK是我想通过获取活动窗口的位置:
gtk_widget_get_allocation
人知道如何做到这一点?
答
这种方法是right.Maybe你可以叫gdk_screen_get_default()
获得GdkScreen找到它是否为null或not.If它不为空,也许,问题是这样的:
GTK+3.0 API of gdk-screen-get-active-window
因为thie方法在我的系统中运行成功。
答
它是接近正确的位置
赢= gdk_screen_get_active_window(gdk_screen_get_default());
gdk_window_get_position(win,NULL,& title_h);
gdk_window_get_root_origin(win,& win_x,& win_y);
win_width = gdk_window_get_width(win);
win_height = gdk_window_get_height(win);
你可以定义什么活动窗口的含义?它是你的应用程序中当前有输入焦点(或可能最后有输入焦点)的窗口? – jku
最后在系统中有输入焦点 – cxl
如果您正在尝试使用另一个应用程序窗口,则无法获得GtkWindow ...首先,该应用程序可能无法使用Gtk构建,因此功能不在此处(而且,您也没有业务查看或修改其他应用的内部信息)。事实上,您可以在没有特殊权限的情况下获取其他应用程序窗口的任何信息,这基本上是窗口系统中的一个设计错误。 – jku