问题描述
我使用的是 Gtkmm4,许多 API 已被删除。在 Gtk3 中可以使用 Gtk::Window::get_xid
(从 Gdk::Window
继承),但这不再可能了,因为 Gdk::Window
已重命名为 Gdk::Surface
,而 Gtk::Window
似乎不再继承它。但是,始终可以使用 Gdk::Surface
获得 GDK_SURFACE_XID(surface)
的 XId。如何获取 Gdk::Surface
的 Gtk::Window
,或者直接从 Gtk::Window
获取 XId?
注意:我只需要使用 Gtkmm 4 的解决方案,而不是 Gtkmm 3 !
解决方法
处理底层表面的代码被拆分成一个单独的接口 Gtk::Native
,然后 Gtk::Window
实现。 Gtk::Native
有一个方法 get_surface()
,它应该像 Gtk::Window::get_window()
在 GTK 3 中那样工作。