2013-02-09 36 views
6

Hàm wxWindow::GetHandle() trả về HWND trên Windows và GtkWidget trên Linux. Tôi cần để có được X11 Window Handle, mà không phải là các widget riêng của mình. Làm thế nào tôi có thể nhận được xử lý từ tiện ích đó? Tôi cần mã C++ vì nó là ngôn ngữ chính của wxWidgets.Xử lý cửa sổ X11 từ GtkWidget

Trả lời

12

Cái gì như:

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

Đó là C vì Gtk + là một C API, nhưng nó cũng là C++, vì vậy không nên có vấn đề.

Và đừng quên #include <gdk/gdkx.h>!

+0

Phải, tôi đã đề cập C khi gtk ở trong C và C++ tương thích ngược. Chính xác thì loại "Cửa sổ" là gì? – user1873947

+3

'Cửa sổ' là loại cửa sổ XWindows gốc. Nó được định nghĩa là 'typedef XID Window;', và XID chính nó là một kiểu tích phân để xác định hầu hết các tài nguyên X (xem '/ usr/include/X11/X.h'). – rodrigo

+0

Cảm ơn bạn. Nếu tôi bao gồm wxwidgets và gdk/gdkx.h, kiểu này có được biết đến với trình biên dịch không? – user1873947

Các vấn đề liên quan