字體:小 中 大 | |
|
|
2018/02/13 17:27:54瀏覽778|回應0|推薦6 | |
上一篇文章以 memo.c 與 push_button.c 介紹了 Xt and Motif Programming,今天這篇文章就正式地介紹 GTK+ Programming,並與 X Intrinsic Toolkit 的 Function Call 來做個對照。 GTK+,royalty free 而且無須公開與 business domain 有關的程式碼,再加上 C compiler 就可以跟它做編譯與連結,因此跟舊有的一些程式碼以及 library 的包容性比較高,所以筆者最後選擇了 GTK+2.0 (雖然 GTK+-3.0 已經問世,但舊的 GTK+-2.0 就已經夠用;在 Ubuntu Linux 之下,鍵入 sudo apt-get install libgtk2.0)。
GTK+ 的 Function Call 與 X Intrinsic Toolkit Function Call 的類似對應,筆者已經註寫在程式當中,讀者可以自行查詢 Function Call 的說明並做個對照。 < Makefile for GTK+-2.0 Programming >
執行: GTK+ 與 X Intrinsic Toolkit 的底層都是 X library,所以兩者的機制是大同小異,基本觀念是一樣的;更精確地說,GTK+ 與 X library 之間還夾了一個 GDK library,另外 GTK+ 的底層還有一個跟 X Window 無關的 library 叫做 GLib,是跟 data structure 有關的 library,例如 list 與 hash 等等。此外,GTK+ 把與 widget 有關的 event 叫做 signal,例如 GtkButton widget 支援 clicked、enter、leave、pressed、以及 released 等 signal,並透過 GLib 的 g_signal_connect() 來建立 widget signal 與 widget callback 的關係;這裡要注意的是,GTK+ 的 widget signal 實際上就是 widget event,這個 signal 跟 Unix System Call 裡面的 signal 是不同的東西,希望讀者不要搞混了! 透過 GTK+ program 與 X Intrinsic Toolkit program 相互對照,就很好理解 GTK+ program 的設計邏輯;當然,GTK+ widget set 比 Xt widget set 與 Motif widget set 豐富許多,也多做了很多事情,真的要好好感謝這些為 GTK+ library 做出貢獻的工程師們。 |
|
( 創作|其他 ) |