lablgtk中

时间:2015-04-24 11:51:34

标签: gtk ocaml lablgtk

在Lablgtk中,有(至少)三种类型的窗口命名模块:

  • Gdk.Window
  • 的GtkWindow
  • GWindow

它们之间有什么区别,我怎样才能从一个到另一个呢?

1 个答案:

答案 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#windowGWindow.window获取GDK窗口。