GTK、GDK、GLIB三者的關係
來源:互聯網
上載者:User
什麼是GDK?
GDK是標準Xlib函數調用的一個基本封裝(wrapper),如果你對Xlib很熟悉,就不需要來重新熟悉絕大多數的GDK函數.所有的函數都是為了提供一個方便直觀的風格來訪問Xlib函數庫.另外,自從GDK使用GLib,在多平台上使用時,GDK變得更加的方便和安全.
什麼是GLib?
GLib庫提供了一系列函數(functions)和定義(definitions),在設計GDK和GTK程式時很有用.它提供了一些標準c函數庫(standard libc)的替代函數,比如malloc,但在其他的系統上使用時有很多問題.
什麼是GTK+?
GTK+是一個小型而高效的控制項陳列庫,具有Motif的外觀和風格.實際上,它比Motif看起來好多了,它包含有基本的控制項和一些很複雜的的控制項:例如檔案選擇、控制項和顏色選擇控制項. GTK+提供了一些獨特的特性,(至少,我知道其他的控制項陳列庫不提供他們),例如,按鈕不提供標籤,它包含了一個子控制項,在很多的時候是一個標籤,但是,這個子控制項也可以是一個映射,映像或者任何其他的程式員想要的集合.在整個的庫中,你隨處可見這種伸縮性.
Gnome的開發基礎結構是圍繞一組函數庫的,所有的內容都是用可移植的ANSI C語言寫成的,可以用於所有類UNIX系統,與圖形相關的函數庫依賴於X Window系統。 Gnome函數庫是最高層的。GTK+由兩部分組成,GTK和GDK。 GTK層為C語言提供了一個物件模型,並為UI工具包提供了最基本的widget,它是上層GUI派生的基礎。 GTK是依賴於GDK的,GDK是Xlib的一個底層封裝,Xlib庫直接與X伺服器對話。 除了Xlib以外的任何部分都是基於GLib的,它是一個有用的C函數庫,提供了很多公用程式和可移植的功能以及一組容易被C語言使用的容器。
一個Gnome程式使用多個庫組成的階層:
Gnome庫在最高層,包括協助常式,類和特殊的widget,並為應用程式提供一個基礎架構。
第二層是GTK,它是GTK+庫的一部分。這個庫提供了基本的工具包和widget來建立GUI應用程式。大多數GUI是直接用GTK編寫的。GTK同時為Gnome庫提供了一個功能強大的對象系統。
再下一層是GDK,它簡單的對X函數庫進行了封裝,只有在我們進行特殊繪畫或設定視窗的特殊屬性的時候才會用到它.
最下面一層是Glib,它是C的一個公用程式庫,包括可移植性和一些公用程式功能,以及一些容器類,例如:鏈表,可變數組,變長字串,HASH(貌似是哈西表),緩衝,一個事件迴圈和其他有用的結構