<<< PreviousGLibNext >>>字串處理GLib 定義了一個叫做 GString 的新類型,該類型相似於標準 C中的string,但可以自動成長。字串資料以null結尾。該類型可以防止程式中的緩衝區溢位錯誤。這是一個非常重要的特性,因此我推薦使用GString。GString 有一簡單定義:struct GString { gchar *str; /* 指向當前以‘/0’結尾的字串。 */ gint len; /* 當前長度
編譯 Hello World 程式編譯命令是:gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` / `pkg-config --libs gtk+-2.0`這裡使用了程式 pkg-config,可以從 www.freedesktop.org 得到。這個程式讀取 GTK 附帶的 .pc 檔案來決定編譯 GTK 程式需要的編譯選項。pkg-config --cflags gtk+-2.0 列出
訊號和回呼函數的原理在 2.0 版,訊號系統已從 GTK 移到 GLib,因此在函數和類型的說明中有首碼 "g_" 而不是 "gtk_"。我們不打算介紹 GLib 2.0 訊號系統相對 GTK 1.2 訊號系統擴充的細節。在我們詳細分析 helloworld 程式之前,我們會討論訊號和回呼函數。GTK 是一個事件驅動的工具包,意味著它會等在 gtk_main() 那裡,直到下一個事件發生,才把控制權傳給適當的函數。控制權的傳遞是使用“訊號”的辦法來完成的。(注意這裡的訊號並不等同於 Unix
事件除有前面描述的訊號機制外,還有一套 events 反映 X 事件機制。回呼函數可以與這些事件串連。這些事件是: event button_press_event button_release_event scroll_event motion_notify_event delete_event destroy_event expose_event key_press_event key_release_event enter_notify_event leave_notify_event
<<< PreviousGLibNext >>>公用程式和錯誤處理函數gchar *g_strdup( const gchar *str );替代strdup函數。把原字串內容複寫到新分配的儲存塊中,返回指向它的指標。gchar *g_strerror( gint errnum );我推薦使用此函數處理所有錯誤資訊,它比 perror() 和其它類似函數更好,更具可移植性。此函數的輸出通常為如下格式:program name:function that
您可以建立具備影像及文字的按鈕,最基本的方式可以透過gtk_button_new_from_stock(),這可以讓您從GTK既有的影像資源中取用影像給按鈕使用,gtk_button_new_from_stock()使用時的參數與出現的影像,可在 Stock Items 查詢。以實際的例子來說,將 自訂 callback 函式 中的按鈕產生程式片段改為以下:button = gtk_button_new_from_stock(GTK_STOCK_YES);
GTK rc 檔案的格式以下樣本說明了 rc 檔案的格式。它取自 GTK 發行包中名為 testgtkrc 的檔案中,但我增加了一些註解和內容。你也許希望在自己的應用程式中包含這些註解以有助於使用者在使用過程中進行小調整。有幾個指令用於改變一個構件的屬性。fg - 設定構件的背景色。bg - 設定構件的前景色彩。bg_pixmap - 設定構件的背景為一幅像素圖。font - 設定構件使用的字型。另外,一個構件可以有幾種狀態,你可以為每種狀態設定不同的顏色,映像和字型。這些狀態是:NORMAL
核取鈕(Check Button)是可以進行選項複選的元件,單選鈕(RadioButton)是只能進行選項單選的元件,在GTK中分別使用GtkCheckButton與GtkRadioButton來負責,它們是雙態按鈕GtkToggleButton的子類:GtkToggleButton +----GtkCheckButton +----GtkRadioButton
GTK 的 rc 檔案GTK 有自己預設處理應用程式的方法,這就是使用rc設定檔。這些檔案可用於給幾乎任何構件設定顏色,也能為一些構件的背景貼上一幅像素圖。rc 檔案的功能在你的應用程式開始處,應包含一個如下的函數調用:void gtk_rc_parse( char *filename );把 rc 檔案名稱傳遞給被調用的函數,隨後 GTK
在程式中常出現一些簡單的對話或訊息方塊,有GTK中,它們都是GtkDialog的子類,在這邊先介紹一些GTK內建的對話方塊,常見類型之一是GtkMessageDialog,首先看個簡單的範例,改寫 自訂 callback 函式 中的例子,按下按鈕後會出現訊息方塊:message_dialog_demo.c#include <gtk/gtk.h>void button_clicked(GtkWidget *button, gpointer data) { GtkWidget
GtkAlignment實際上是GtkContainer的子類,可以設定它當中的子元件對齊與大小:GtkContainer +----GtkBin
Hello World 詳解現在我們知道基本理論了,讓我們來詳細分析helloworld樣本程式。這是按鈕被點擊時要調用的回呼函數。在這個樣本中我們忽略了參數 widget 和 data,但是使用這些參數也不難。下一個樣本會使用 data 參數來告訴我們哪個按鈕被按下了。void hello( GtkWidget *widget, gpointer data ){ g_print ("Hello World/n");}接下來的一個回呼函數有點特殊。"delete_
GtkFrame是GtkContainer的子類,可以容納子元件,並擁有一個外框及標籤文字:GtkContainer +----GtkBin +----GtkFrame 您可以使用gtk_frame_new()建立一個GtkFrame,並在建立時指定標籤文字,或是在之後使用gtk_frame_set_label()設定文字,標籤文字的位置預設是左上邊,您可以使用gtk_frame_set_label_align()設定標籤文字的位置:GtkWidget*
儲存管理gpointer g_malloc( gulong size );這是 malloc() 函數的替代函數,不需要檢查傳回值,因為此函數已替你做這件事了。如果儲存分配因任何原因失敗,應用程式將被終止。gpointer g_malloc0( gulong size );和上一函數相同,但在返回指向所分配儲存塊的指標之前,將該儲存塊清 0。gpointer g_realloc( gpointer mem, gulong size
GtkAboutDialog是GtkDialog的子類別,提供您在製作應用程式「關於 XXX」時的內建對話方塊,直接以程式實例來看看它的一些功能:gtk_about_dialog_demo.c#include <gtk/gtk.h>void button_clicked(GtkWidget *button, gpointer data) { GtkWidget *dialog; GdkPixbuf *logo; GError *error = NULL;
加入GtkHandleBox的元件,是一個可以被拿下來(torn off)的元件,或稱之為所謂的浮動元件,GtkHandleBox是GtkContainer的子類:GtkContainer +----GtkBin +----GtkHandleBox 這樣的拿下(tear off)功能,常見的就是用來製作一個浮動選單,或是一個浮動工具列,下面這個範例是個簡單的示範,您可以瞭解GtkHandleBox的設定及功用,範例中包括一個放進GtkHandleBox的 GtkLabel,
<<< PreviousGLibNext >>>計時器計時器函數可用於對操作計時(即查看操作所耗費的時間)。首先用 g_timer_new() 函數建立一個新計時器,然後用g_timer_start() 函數啟動計時,用 gh_timer_stop() 停止計時,用 g_timer_elapsed()函數決定所耗的時間。GTimer *g_timer_new( void );void g_timer_destroy( GTimer *timer );void
GtkColorButton是一個外觀為目前選擇顏色的按鈕,按下時會出現選取顏色的對話方塊,您可以使用gtk_color_button_new()建立按鈕,或是使用gtk_color_button_new_with_color()指定初始顏色建立按鈕,使用gtk_color_button_set_color()或gtk_color_button_get_color()設定或取得目前的顏色,而這與一個GdkColor有關:typedef struct { guint32 pixel;
GtkMenuBar、GtkMenu、GtkMenuItem是用來製作視窗程式的選單功能,以下是三個元件的作用示意圖:圖中的File、Edit、About、Open、Save、分隔線、Close等項目,都是GtkMenuItem的實例,在File底下有子選單,這是GtkMenu的實例,視窗上方則為GtkMenuBar的實例。上圖中,File、Edit、About附加至GtkMenuBar中:GtkMenuBar *menubar = gtk_menu_bar_new();//
GtkFontButton是一個外觀為目前選擇字型名稱的按鈕,按下時會出現選取字型的對話方塊,您可以使用gtk_font_button_new()建立按鈕,或是使用gtk_color_button_new_with_font()指定初始字型建立按鈕,指定時使用字串指定,格式為"Family StyleSize"。Family為字型名稱,例如"Arial"、"Serif"這樣的名稱。Style為字型樣式,可設定的樣式依字型而有所不同,通常可以指定的有粗體"Bold"、斜體"Italic"、粗斜體"