[程序開發(fā)]GTK+ 2.0 教程 中文版
譯者: huzheng,konghui,ferry,carton,yang_yi,ddd,tingle
版本號(hào): V_0.1.0 2002年6月25日
本文是有關(guān)通過 C 語言接口使用 GTK (the GIMP Toolkit) 的教程。
簡(jiǎn)介
GTK (GIMP Toolkit) 是一套用于創(chuàng)建圖形用戶界面的工具包。它遵循 LGPL 許可證,所以你可以用它來開發(fā)開源軟件、自由軟件,甚至是封閉源代碼的商業(yè)軟件,而不用花費(fèi)任何錢來購(gòu)買許可證和使用權(quán)。
GTK 被稱為 GIMP 工具包是因?yàn)樽畛鯇懰怯脕黹_發(fā) GIMP (GNU 圖像處理程序) 的,但是它現(xiàn)在已經(jīng)被用于很多軟件項(xiàng)目了,包括 GNOME (GNU 網(wǎng)絡(luò)對(duì)象模型環(huán)境)。GTK 是在 GDK (GIMP Drawing Kit) 和 gdk-pixbuf 的基礎(chǔ)上建立起來的,GDK 基本上是對(duì)訪問窗口的底層函數(shù) (在 X 窗口系統(tǒng)中是 Xlib) 的一層封裝,gdk-pixbuf 是一個(gè)用于客戶端圖像處理的庫(kù)。
GTK 的創(chuàng)建者是:
Peter Mattis petm@xcf.berkeley.edu
Spencer Kimball spencer@xcf.berkeley.edu
Josh MacDonald jmacd@xcf.berkeley.edu
GTK 的當(dāng)前維護(hù)者是:
Owen Taylor otaylor@redhat.com
Tim Janik timj@gtk.org
GTK 實(shí)質(zhì)上是一個(gè)面向?qū)ο蟮膽?yīng)用程序接口 (API)。盡管完全用 C 寫成的,但它是基于類和回調(diào)函數(shù) (指向函數(shù)的指針) 的思想實(shí)現(xiàn)的。
還有一個(gè)名為 GLib 的第三個(gè)組件,包含一些標(biāo)準(zhǔn)函數(shù)的替代函數(shù),以及一些處理鏈表等數(shù)據(jù)結(jié)構(gòu)的函數(shù)等。這些替代函數(shù)被用來增強(qiáng)GTK 的可移植性,因?yàn)樗鼈兯鶎?shí)現(xiàn)的一些函數(shù)在其它 Unix 系統(tǒng)上未實(shí)現(xiàn)或不符合標(biāo)準(zhǔn),比如 g_strerror()。一些是對(duì) libc 的對(duì)應(yīng)函數(shù)的增強(qiáng),比如 g_malloc() 具有增強(qiáng)的調(diào)試功能。
在 2.0 版中,GLib 又加入這樣一些新內(nèi)容:構(gòu)成 GTK 類層次基礎(chǔ)的類型系統(tǒng) (type system),在 GTK 中廣泛使用的信號(hào)系統(tǒng),對(duì)各種不同平臺(tái)的線程 API 進(jìn)行抽象而得的一個(gè)線程 API,以及一個(gè)加載模塊的工具。
作為最后一個(gè)組件,GTK 使用了 Pango 庫(kù)來處理國(guó)際化文字輸出。
本教程講述 GTK 的 C 接口。還有許多其它語言的 GTK 綁定如 C++、Perl、Python、TOM、Ada95、Objective C、Free Pascal、Eiffel、Java 和 C#。如果你想使用 GTK 其它語言的綁定,請(qǐng)先查看該綁定的文檔。有時(shí)這些文檔會(huì)講一些重要的概念,然后你再來參考本教程。還有一些跨平臺(tái)的 API (如 wxWindows 和 V),它們把 GTK 作為一個(gè)支持的平臺(tái)。同樣,先參考它們的文檔。
如果你用 C++ 來開發(fā) GTK 應(yīng)用程序,有以下幾點(diǎn)需要注意。已有一個(gè) GTK 的 C++ 綁定叫做 GTK-- (譯者注:現(xiàn)在叫做 gtkmm),提供一個(gè)更符合 C++ 規(guī)范的接口,你可以先看看這個(gè)接口。如果你由于種種原因不喜歡這種方法,還有另外兩種使用 GTK 的方法。首先,你可以只使用 C++ 中的 C 子集來調(diào)用 GTK,這樣就可以使用本教程描述的 C 接口。其次,你可以用下述方法同時(shí)使用 GTK 和 C++:把所用的回調(diào)函數(shù)定義為 C++ 類中的靜態(tài)成員函數(shù),然后仍然使用 C 接口來調(diào)用 GTK。如果你選擇后一種方法,你可以把指向要操作的對(duì)象的指針 (即所謂的 "this" 作為回調(diào)函數(shù)的 data 參數(shù)。選擇哪一種方法僅僅是個(gè)人的喜好問題,因?yàn)椴还苡媚囊环N方法,你都會(huì)得到 C++ 和 GTK。它們都不需要特殊的預(yù)處理程序,因此你可以同時(shí)使用標(biāo)準(zhǔn) C++ 和 GTK。
本教程試圖盡可能詳細(xì)地描述 GTK,但是肯定不能面面俱到。本教程假設(shè)你能夠較好的理解 C 語言,并且了解怎樣編寫一個(gè) C 程序。有 X 編程經(jīng)驗(yàn)會(huì)很有幫助,但不是必要條件。如果 GTK 是你學(xué)習(xí)的第一個(gè)構(gòu)件工具包,請(qǐng)告訴我們你怎樣找到這個(gè)教程,以及學(xué)習(xí)時(shí)有什么困難。還有其它一些語言的綁定,如 C++、Objective C、ADA、Guile 等,但我不了解這些。
Table of Contents
中文版說明
簡(jiǎn)介
從這里開始
用 GTK 來寫 Hello World
編譯 Hello World 程序
信號(hào)和回調(diào)函數(shù)的原理
事件
Hello World 詳解
繼續(xù)
數(shù)據(jù)類型
深入探索信號(hào)處理函數(shù)
改進(jìn)了的 Hello World
組裝構(gòu)件
組裝盒的原理
盒的細(xì)節(jié)
組裝示范程序
用表組裝
表組裝示例
構(gòu)件概述
類型轉(zhuǎn)換
構(gòu)件的組織
無窗口構(gòu)件
按鈕構(gòu)件
一般按鈕 Normal Buttons
開關(guān)按鈕 Toggle Buttons
復(fù)選按鈕 Check Buttons
單選按鈕 Radio Buttons
調(diào)整對(duì)象 Adjustments
創(chuàng)建一個(gè)調(diào)整對(duì)象
輕松使用調(diào)整對(duì)象
“調(diào)整對(duì)象”的內(nèi)部機(jī)制
范圍構(gòu)件 Range Widgets
滾動(dòng)條構(gòu)件 Scrollbar Widgets
比例構(gòu)件 Scale Widgets
創(chuàng)建一個(gè)比例構(gòu)件
函數(shù)和信號(hào)(至少講了函數(shù))
常用的范圍函數(shù)
設(shè)置更新方式
獲得和設(shè)置調(diào)整對(duì)象
鍵盤和鼠標(biāo)綁定
示例
雜項(xiàng)構(gòu)件
標(biāo)簽 Labels
箭頭 Arrows
工具提示對(duì)象 The Tooltips Object
進(jìn)度條 Progress Bars
對(duì)話框 Dialogs
標(biāo)尺 Rulers
狀態(tài)欄 Statusbars
文本輸入構(gòu)件 Text Entries
微調(diào)按鈕 Spin Buttons
組合框 Combo Box
日歷 Calendar
顏色選擇 Color Selection
文件選擇 File Selections
容器構(gòu)件 Container Widgets
事件盒 The EventBox
對(duì)齊構(gòu)件 The Alignment widget
固定容器 Fixed Container
布局容器 Layout Container
框架 Frames
比例框架 Aspect Frames
分欄窗口構(gòu)件 Paned Window Widgets
視角 Viewports
滾動(dòng)窗口 Scrolled Windows
按鈕盒 Button Boxes
工具欄 Toolbar
筆記本 Notebooks
菜單構(gòu)件
手工創(chuàng)建菜單
手工菜單示例
使用套件
套件示例
無文檔構(gòu)件
快捷標(biāo)簽 Accel Label
選項(xiàng)菜單 Option Menu
菜單項(xiàng) Menu Items
復(fù)選菜單項(xiàng) Check Menu Item
單選菜單項(xiàng) Radio Menu Item
分隔菜單項(xiàng) Separator Menu Item
分離菜單項(xiàng) Tearoff Menu Item
曲線圖 Curves
繪圖區(qū) Drawing Area
字體選擇對(duì)話框 Font Selection Dialog
消息對(duì)話框 Message Dialog
Gamma 曲線圖
圖像 Image
插頭和插座 Plugs and Sockets
樹視區(qū) Tree View
文本視區(qū) Text View
設(shè)置構(gòu)件的屬性
超時(shí)、IO 和 Idle 函數(shù)
超時(shí) Timeouts
監(jiān)控IO
Idle 函數(shù)
高級(jí)事件和信號(hào)處理
信號(hào)函數(shù)
連接和斷開信號(hào)處理函數(shù)
阻塞和反阻塞信號(hào)處理函數(shù)
發(fā)出和停止信號(hào)
信號(hào)的發(fā)射和傳播
操作選中區(qū)
概述
獲取選中區(qū)信息
提供選中區(qū)
拖放
概述
屬性
函數(shù)
設(shè)置源構(gòu)件
源構(gòu)件上的信號(hào)
設(shè)置目的構(gòu)件
目的構(gòu)件上的信號(hào)
GLib
定義
雙向鏈表
單向鏈表
存儲(chǔ)管理
計(jì)時(shí)器
字符串處理
實(shí)用程序和錯(cuò)誤處理函數(shù)
GTK 的 rc 文件
rc 文件的功能
GTK rc 文件的格式
rc 文件示例
編寫你自己的構(gòu)件
概述
一個(gè)構(gòu)件的剖析
創(chuàng)建一個(gè)復(fù)合構(gòu)件
介紹
選擇一個(gè)父類
頭文件
_get_type() 函數(shù)
_class_init() 函數(shù)
_init() 函數(shù)
其余的...
從頭創(chuàng)建構(gòu)件
介紹
在屏幕上顯示構(gòu)件
表盤構(gòu)件的原形
主體
gtk_dial_realize()
大小磋商
gtk_dial_expose()
事件處理
可能的增強(qiáng)
深入的學(xué)習(xí)
涂鴉板,一個(gè)簡(jiǎn)單的繪圖程序
概述
事件處理
繪圖區(qū)構(gòu)件和繪圖
添加XInput支持
允許擴(kuò)展設(shè)備信息
使用擴(kuò)展設(shè)備信息
得到更多關(guān)于設(shè)備的信息
進(jìn)一步的講解
編寫 GTK 應(yīng)用程序的技巧
投稿
鳴謝
教程的版權(quán)和許可聲明
GTK 信號(hào)
GtkObject
GtkWidget
GtkData
GtkContainer
GtkCalendar
GtkEditable
GtkNotebook
GtkList
GtkMenuShell
GtkToolbar
GtkButton
GtkItem
GtkWindow
GtkHandleBox
GtkToggleButton
GtkMenuItem
GtkCheckMenuItem
GtkInputDialog
GtkColorSelection
GtkStatusBar
GtkCurve
GtkAdjustment
GDK 事件類型
示例程序代碼
Tictactoe
tictactoe.h
tictactoe.c
ttt_test.c
GtkDial
gtkdial.h
gtkdial.c
dial_test.c
Scribble
scribble-simple.c
scribble-xinput.c
術(shù)語表
--------------------------------------------------------------------------------------
經(jīng)常下載的人估計(jì)電腦里面都有幾個(gè)G的電子書
有書不讀真浪費(fèi),敬告四處下書的朋友們
下書千本不如讀書一卷,閑下來時(shí)讀點(diǎn)書
從現(xiàn)在開始... 
---------------------------------------------------------------------------------------
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù) |