在Lablgtk中,有(至少)三种类型的窗口命名模块:
它们之间有什么区别,我怎样才能从一个到另一个呢?
答案 0 :(得分:1)
GTK最初用于X11系统。在X11中,“窗口”是一个矩形区域,您可以在其上绘制并从中选择事件。它们可以嵌套在树中,整个屏幕的顶部有“根窗口”。 Gdk.window
是X11窗口周围的薄包装,但它足够抽象以支持非X11后端。
GTK窗口是用户会想到的一个窗口 - 一个可调整大小的屏幕区域,带有标题,边框等。实际上,这可能是由包含标题和边框的窗口管理器提供的X11窗口和内容区域的另一个X11窗口。然后,该内部窗口可以包含子窗口,例如,每个按钮一个。但是,我认为现代GTK通常不会打扰子窗口并自行管理所有内容以避免闪烁。
Gtk.window Gtk.obj
表示GTK C库提供的C对象。 C库公开的函数可在GtkWindow.Window
中找到。
但是,C对象通常由GWindow.window
类包装,以便为其提供OO OCaml API。
使用gtk_window#misc#window
从GWindow.window
获取GDK窗口。