2016-01-22 127 views
0

我曾尝试这样的:如何在gtk3中获得一个活动的gtk窗口?

gdk_screen_get_active_window(gdk_screen_get_default()); 

但它返回GDK窗口,这不是我想要的。


原因需要GTK是我想通过获取活动窗口的位置:

gtk_widget_get_allocation 

人知道如何做到这一点?

+0

你可以定义什么活动窗口的含义?它是你的应用程序中当前有输入焦点(或可能最后有输入焦点)的窗口? – jku

+0

最后在系统中有输入焦点 – cxl

+0

如果您正在尝试使用另一个应用程序窗口,则无法获得GtkWindow ...首先,该应用程序可能无法使用Gtk构建,因此功能不在此处(而且,您也没有业务查看或修改其他应用的内部信息)。事实上,您可以在没有特殊权限的情况下获取其他应用程序窗口的任何信息,这基本上是窗口系统中的一个设计错误。 – jku

回答

0

这种方法是right.Maybe你可以叫gdk_screen_get_default()获得GdkScreen找到它是否为null或not.If它不为空,也许,问题是这样的:

GTK+3.0 API of gdk-screen-get-active-window

因为thie方法在我的系统中运行成功。

+0

gdk_screen_get_default()返回非空 – cxl

+0

“gtk_widget_get_allocation”需要GtkWidget,但“gdk_screen_get_active_window”返回一个GdkWindow – cxl

+0

我可以使用“gdk_window_get_width”来获取窗口宽度。但这不是真正的宽度〜 – cxl

1

它是接近正确的位置

赢= 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);

相关问题