在 Lablgtk 中,有(至少)三种类型的窗口命名模块:
- Gdk.Window
- 窗口
- 窗口
它们之间有什么区别,我该如何从一个转到另一个?
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#window
从GWindow.window
.