【发布时间】:2013-01-25 03:44:07
【问题描述】:
wxWindow::GetHandle() 函数在 Windows 上返回 HWND,在 Linux 上返回 GtkWidget。我需要获取 X11 窗口句柄,它不是小部件本身。如何从该小部件中获取句柄?我需要 C++ 代码,因为它是 wxWidgets 的主要语言。
【问题讨论】:
标签: c++ linux gtk wxwidgets window-handles
wxWindow::GetHandle() 函数在 Windows 上返回 HWND,在 Linux 上返回 GtkWidget。我需要获取 X11 窗口句柄,它不是小部件本身。如何从该小部件中获取句柄?我需要 C++ 代码,因为它是 wxWidgets 的主要语言。
【问题讨论】:
标签: c++ linux gtk wxwidgets window-handles
类似:
GtkWidget *widget = ...;
Window w = gdk_x11_drawable_get_xid(gtk_widget_get_window(widget));
是C,因为Gtk+是C API,但也是C++,所以应该没有问题。
别忘了#include <gdk/gdkx.h>!
【讨论】:
Window 是原生 XWindows 窗口的类型。定义为typedef XID Window;,XID本身就是一个整数类型,可以识别大部分X资源(见/usr/include/X11/X.h)。
<gdk/gdkx.h> 已经包含了它需要的任何 X11 标头。其他问题是您是否必须包含任何 Gtk 标头,例如 <gtk/gtk.h>。
gdk_x11_window_get_xid()。