跳轉至內容

計算機程式設計/事件驅動程式設計

來自華夏公益教科書,自由的教學讀物
所有書架 > 科學 > 計算機科學 > 計算機程式設計 > 事件驅動程式設計

在這種型別的程式設計中,編寫一段程式碼來響應每個事件。事件可以是使用者事件,例如按鈕點選或滑鼠移動。事件也可以在計算機內部生成,例如計時器事件。最後,程式設計師可以生成事件。

響應事件有時被稱為處理事件。

該程式僅僅由響應事件的程式碼段組成。這些程式碼段可能反過來使用其他程式碼段(過程,方法)。

這個簡單的 GTK+ 程式製作了一個具有按鈕的 GUI,該按鈕響應點選事件,我們在由 gtk_main() 函式提供的迴圈中輸入後。每當發生事件時,例如 "clicked" 事件,我們透過 g_signal_connect() 函式查詢與其連線的事件處理程式,並透過呼叫它們來委託函式。在本例中,呼叫了處理程式 btn_clicked。

/*
#    GtkBook :
#       A Book for GTK+ users.
#    Copyright (C) July, 2005 Muthiah Annamalai
#
#    This program is free software; Licensed under GPL.
*/
#include<gtk/gtk.h>

gboolean
btn_clicked(GtkWidget *w,gpointer data)
{
  GtkButton *btn=GTK_BUTTON(w);
  gtk_button_set_label(btn,"You Cliked Me");  
  return TRUE;
}

int main()
{
  GtkWidget *w,*box,*btn;
  gtk_init(NULL,NULL);

  w=gtk_window_new(GTK_WINDOW_TOPLEVEL);

  box=gtk_vbox_new(!FALSE,!FALSE);
  gtk_window_set_title(GTK_WINDOW(w),"Button Widget");
  
  btn=gtk_button_new_with_label("Hello World! Click Me:");
  gtk_container_add(GTK_CONTAINER(w),btn);

  g_signal_connect(G_OBJECT(btn),"clicked",G_CALLBACK(btn_clicked),NULL);
  gtk_window_set_position(GTK_WINDOW(w),GTK_WIN_POS_CENTER);  
  gtk_widget_show_all(w);

  gtk_main();
  return 0;
}

/* 
gcc -o button button.c -Wall -ggdb `pkg-config gtk+-2.0  --cflags --libs`
*/
華夏公益教科書