2016-01-22 136 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);

相關問題