【问题标题】:Getting X11 window handle from GtkWidget从 GtkWidget 获取 X11 窗口句柄
【发布时间】:2013-01-25 03:44:07
【问题描述】:

wxWindow::GetHandle() 函数在 Windows 上返回 HWND,在 Linux 上返回 GtkWidget。我需要获取 X11 窗口句柄,它不是小部件本身。如何从该小部件中获取句柄?我需要 C++ 代码,因为它是 wxWidgets 的主要语言。

【问题讨论】:

    标签: c++ linux gtk wxwidgets window-handles


    【解决方案1】:

    类似:

    GtkWidget *widget = ...;
    Window w = gdk_x11_drawable_get_xid(gtk_widget_get_window(widget));
    

    是C,因为Gtk+是C API,但也是C++,所以应该没有问题。

    别忘了#include <gdk/gdkx.h>

    【讨论】:

    • 是的,我也应该提到 C,因为 gtk 在 C 中,而 c++ 向后兼容。 “Window”类型到底是什么?
    • Window 是原生 XWindows 窗口的类型。定义为typedef XID Window;,XID本身就是一个整数类型,可以识别大部分X资源(见/usr/include/X11/X.h)。
    • 谢谢。如果我包含 wxwidgets 和 gdk/gdkx.h,编译器会知道这种类型吗?
    • 是的,<gdk/gdkx.h> 已经包含了它需要的任何 X11 标头。其他问题是您是否必须包含任何 Gtk 标头,例如 <gtk/gtk.h>
    • @Noitidart 在 Gtk3 中有等价的 gdk_x11_window_get_xid()
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多