亚洲免费人人妻人人,cao78在线视频,福建一级毛片,91精品视频免费观看,高清另类图片操逼,日本特黄特色大片免费看,超碰欧美人人澡曰曰澡夜夜泛

Linux下的GTK圖形界面編程

時(shí)間:2023-05-01 08:28:31 計(jì)算機(jī)論文 我要投稿
  • 相關(guān)推薦

Linux下的GTK圖形界面編程

【摘要】 本文介紹了Linux平臺(tái)下的Xwindow圖形窗口編程工具GTK,并給出了用GTK編程的基本要素和步驟。

【關(guān)鍵詞】GTK,回調(diào)函數(shù),消息處理器,調(diào)節(jié)器

GTK(GIMP Toolkit)是一個(gè)圖形用戶(hù)編程的接口工具。它注冊(cè)完全免費(fèi),所以用來(lái)開(kāi)發(fā)自由軟件或商業(yè)軟件都不需要花費(fèi)什么,F(xiàn)在很多Linux集成系統(tǒng)都已經(jīng)將GTK1.2版本打包進(jìn)去了。包括RedHat Linux 6.0以上版本,還有中文化的Turbo Linux等等。它也越來(lái)越被普遍的應(yīng)用于UNIX系統(tǒng)編程。

還有一個(gè)組件叫Glib,它包含了一些標(biāo)準(zhǔn)應(yīng)用的新擴(kuò)展用來(lái)提高GTK的兼容性。用于Linux系統(tǒng)的某些函數(shù)可能不適合標(biāo)準(zhǔn)的UNIX系統(tǒng),例如g_strerror()函數(shù)等等。某些函數(shù)也擴(kuò)展了GNUC的一般功能,例如g_malloc函數(shù)就有自己加強(qiáng)的調(diào)試功能。

GTK可以與多種語(yǔ)言綁定,包括C , Guile, Perl, Python, Ton, Ada95, Objective C, Free Pascal, Eiffel。用標(biāo)準(zhǔn)C開(kāi)發(fā)的程序,編譯軟件可用GNU并附帶上GTK選項(xiàng)即可。想用除了標(biāo)準(zhǔn)C以外的其它語(yǔ)言來(lái)開(kāi)發(fā)Xwindow圖形用戶(hù)程序,則需要先參考一下有關(guān)綁定軟件的內(nèi)容(HTTP:// www.gtk.org)。 如果用C 語(yǔ)言來(lái)調(diào)用GTK進(jìn)行開(kāi)發(fā),可以用已經(jīng)和C 綁定的軟件叫GTK--軟件,來(lái)提供一個(gè)比GTK更好的C 編譯環(huán)境。

目前已經(jīng)開(kāi)發(fā)出來(lái)GTK的增強(qiáng)版GTK 。GTK 是將GTK,GDK,GLIB集成在一起的開(kāi)發(fā)包,可以工作在許多類(lèi)似于UNIX的系統(tǒng)上,沒(méi)有GTK的平臺(tái)限制。

1.GTK的消息處理機(jī)制

下面我們先看一個(gè)基本的例子,該例子產(chǎn)生一個(gè)200×200像素的窗口。它不能自己退出,只能通過(guò)shell來(lái)殺死進(jìn)程(調(diào)用kill命令)。

/*例子 base.c */

#include <gtk/gtk.h>

int main( int argc,char *argv[ ] ){

GtkWidget *window;

gtk_init (&argc, &argv); /* 初始化顯示環(huán)境 */

window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* 創(chuàng)建一個(gè)新的窗口*/

gtk_widget_show (window); /*顯示窗口*/

gtk_main (); /*進(jìn)入睡眠狀態(tài),等待事件激活*/

return(0);

}

從上面的程序可以看出,GTK是一個(gè)事件驅(qū)動(dòng)工具包,當(dāng)它運(yùn)行到gtk_main()函數(shù)時(shí)會(huì)自動(dòng)睡眠,直到有事件發(fā)生,控制權(quán)轉(zhuǎn)讓給相應(yīng)的函數(shù)調(diào)用,在該函數(shù)中可以用標(biāo)準(zhǔn)C寫(xiě)出相應(yīng)的事物邏輯。這與windows 上的程序處理是一樣的。

對(duì)窗口對(duì)象上發(fā)生的事件(如按下鼠標(biāo),激活鍵盤(pán)等),GTK也有相應(yīng)的消息信號(hào)產(chǎn)生。這時(shí)就需要程序員創(chuàng)建一個(gè)信號(hào)處理器來(lái)捕獲該信號(hào),并告訴GTK程序事件發(fā)生后調(diào)用哪個(gè)回調(diào)函數(shù)。信號(hào)處理器的創(chuàng)建函數(shù)定義如下:

gint gtk_signal_connect( GtkObject *object, gchar *name,GtkSignalFunc callback_func, gpointer func_data );

返回值是一個(gè)區(qū)分同一對(duì)象中的事件與不同回調(diào)函數(shù)的關(guān)聯(lián)標(biāo)簽。這樣可以做到一個(gè)對(duì)象的一個(gè)信號(hào)就有任意多個(gè)回調(diào)函數(shù),并且每一個(gè)都會(huì)按照聲明的順序執(zhí)行。函數(shù)調(diào)用的第一個(gè)參數(shù)是產(chǎn)生信號(hào)的widget組件(即按鈕等窗口構(gòu)件),而name則是希望捕獲的信號(hào)或事件的名稱(chēng),callback_func則是事件發(fā)生后所調(diào)用的回調(diào)函數(shù)名稱(chēng),而第四個(gè)參數(shù)func_data則是傳遞給回調(diào)函數(shù)的參數(shù)。

回調(diào)函數(shù)要定義在主程序的前面,它們的一般格式都如下所示:

void callback_func( GtkWidget *widget, gpointer func_data );

調(diào)用下面這個(gè)方法將允許你將回調(diào)函數(shù)與事件的關(guān)聯(lián)斷開(kāi):

void gtk_signal_disconnect( GtkObj

[1] [2] [3] [4] 

【Linux下的GTK圖形界面編程】相關(guān)文章:

Linux系統(tǒng)下指紋圖像處理系統(tǒng)的研究與實(shí)現(xiàn)04-27

linux幾個(gè)有用的命令Linux-電腦資料09-16

編程的心得03-14

給機(jī)器編程04-28

Linux操作系統(tǒng)下射電望遠(yuǎn)鏡控制軟件的開(kāi)發(fā)05-03

Design and Implementation of Visual Dynamic Display Software of Gene Expression Based on GTK05-02

數(shù)控編程心得05-07

編程語(yǔ)言排名04-29

在SUSE Linux系統(tǒng)下通過(guò)ADSL網(wǎng)絡(luò)實(shí)現(xiàn)地震波形瀏覽05-01

Linux就業(yè)形勢(shì)報(bào)告04-27