2

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

  • Gdk.Window
  • 窗口
  • 窗口

它们之间有什么区别,我该如何从一个转到另一个?

4

1 回答 1

1

GTK 最初用于 X11 系统。在 X11 中,“窗口”是一个矩形区域,您可以在上面绘制并从中选择事件。它们可以嵌套在树中,“根窗口”位于整个屏幕的顶部。AGdk.window是 X11 窗口周围的薄包装器,但足够抽象以支持非 X11 后端。

GTK 窗口是用户所认为的窗口——屏幕上可调整大小的区域,带有标题、边框等。事实上,这可能是由窗口管理器提供的一个 X11 窗口,包含标题和边框以及另一个 X11内容区域的窗口。然后这个内部窗口可能包含子窗口,例如每个按钮一个。但是,我认为现代 GTK 通常不会打扰子窗口,而是自行管理所有内容以避免闪烁。

AGtk.window Gtk.obj代表 GTK C 库提供的 C 对象。C 库公开的函数在GtkWindow.Window.

但是,C 对象通常由GWindow.window类包装以向其提供 OO OCaml API。

用于gtk_window#misc#windowGWindow.window.

于 2015-04-25T12:27:28.550 回答