มือใหม่หัดใช้ GTK +

×

Error message

Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /data/wwwroot/includes/common.inc).

อันเก่า ที่เคยเขียนไว้ที่ gotoknow.org
--------------------------------------------------------
ตอนนี้เริ่มทำงานแล้ว รู้สึกว่าต้องปรับตัวหลายอย่างเหมือนกัน สำหรับงานที่ต้องทำก็ต้องเขียนโปรแกรมบน Linux แต่ต้องเป็นกราฟฟิกโหมด เลยเลือกใช้ GTK+ ความยากมันอยู่ที่เป็นภาษา C ซึ่งไม่ถนัด เคยแต่อ่านโค้ด อาศัยอความรู้จาก C++ ช่วยเลยพอรอดตัว

สำหรับคนที่ไม่เคยเขียนโปรแกรมบน Linux อันนี้ไม่นับจาวานะครับ ก็ขอสรุปเกี่ยวกับกราฟฟิกโหมดบน Linux คร่าว ๆ ตามที่เข้าใจ รายละเอียดผมไม่กล่าวถึงนะครับ ดังนี้

Linux ที่จริงเป็นเพียง kernel ที่เราสามารถจะโหลดอะไร ไปประมวลผลได้ สำหรับกราฟฟิกโหมดนั้นปัจจุบันใช้ XWindow หรือ x.org นั่นเอง เป็นตัวจัดการ ซึ่ง x นั้น ใช้งานยากอยู่ จึงมีผู้คิดสร้าง ตัวจัดการหน้าต่าง หรือ window manager ขึ้น ซึ่งก็มี library พ่วงท้ายมาด้วย ปัจจุบันก็เช่น GTK+ ที่ใช้, QT, wxWidget เป็นต้น แต่โปรแกรมเหล่านี้ก็จัดการหน้าต่างอย่างเ้ดียว จึงมีผู้คิดสร้างเป็นระบบที่มีเครื่องมือช่วยมากขึ้น เช่น taskbar ซึ่งระบบนี้ครอบบน x อีกที เรียกว่า desktop environment เช่น GNOME, KDE เป็นต้น

+---------------------------------------------------+
| +-----------------------------+..................... |
| | +---------+ ...................|...................... |
| | | kernel ..| xwindow ......| desktop env... |
| | +---------+ ...................|..................... |
| +---------------------------+ .......................|
+---------------------------------------------------+

GTK ประกอบด้วยส่วนสำคัญคือ
-- Glib เป็น library พื้นฐานเกี่ยวกับobject ต่าง ๆ
-- Pango เป็น library จัดการ layout และ การ render text
-- ATK เป็นlibrary ช่วยจัดการเกี่ยวกับ accessibility สำหรับคนพิการ

โปรแกรมแรก :

  1. /******* helloworld.c **********/
  2.  
  3. #include <gtk/gtk.h>
  4.  
  5. int main( int   argc,char *argv[] )
  6.  
  7.  {    
  8.  
  9.      /* ประกาศ widget */
  10.  
  11.        GtkWidget *window;
  12.  
  13.        GtkWidget *label;
  14.  
  15.        /*ต้องมีเพื่อส่งอาร์กิวเมนต์ไปให้ GTK รู้*/
  16.  
  17.      gtk_init (&argc, &argv);
  18.  
  19.        /* สร้าง window */
  20.  
  21.        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  22.  
  23.        /* สร้างลาเบล */
  24.  
  25.        label = gtk_label_new ("Hello World");
  26.  
  27.         /* ใส่ลาเบล บน window */
  28.  
  29.        gtk_container_add (GTK_CONTAINER (window), label);
  30.  
  31.         /* lสั่งให้แสดง widget */
  32.  
  33.        gtk_widget_show (button);
  34.  
  35.        gtk_widget_show (window);
  36.  
  37.        /* สั่งให้ gtk ทำงาน*/
  38.  
  39.        gtk_main ();
  40.  
  41.         return 0;
  42.  
  43.    }  

compile :

  1. gcc -Wall -o helloworld `pkg-config gtk+-2.0 --cflags --libs` helloworld.c

run:

  1. ./helloworld  

น่าจะมี window ขึ้นมานะ เหอ ๆ

แค่นี้ก่อนดีกว่า

--------------------------------------------------------------

ที่มา :

http://www.gtk.org/

Comments

สวัสดีครับ

จะถามพี่หลายครั้งแล้วแต่หาเมล์ไม่เจอเลยไม่รู้ว่าจะติดต่อยังไง

ขอถามในคอมเม้นท์ละกันนะครับ

ผมเรียนวิศวคอมปี 1 ครับ

คือผมอยากจะเก่งอะไรซักด้าน ที่เป็นประโยชน์เวลาจบไปทำงาน แบบว่าเป็นจุดขายอะครับ

เพราะเพื่อนผมบางคนเก่งPHP บางคนเก่งC บางคนgraphic design

แต่ผมยังไม่มีอะไรเลย

ขอบคุณครับ

sake's picture

ตอบเป็นบล็อกละกันนะครับ

อยากเขียน GTK+ บนวินโดวส์ ครับ
อยากทราบว่ามี Editor บ้างหรือเปล่า สำหรัยเขียน GTK+
ลองติดตั้งคู่กับ Editor อื่นแล้ว ก็ยังไม่ได้..

ถ้ามีบอกวิธีติดตั้งด้วย ก็จะดีมาก
ขอบคุณครับ...

หมายเหตุ : มือใหม่หัดเขียนครับ

sake's picture

ถ้าเป็นแบบ IDE ลากวาง ๆ แล้วล่ะก็ ปกติจะใช้ Glade ครับ ซึ่งมีบน Windows ด้วย http://sourceforge.net/projects/gladewin32/ หรือไม่ก็อาจจะลองใช้ QT4 แทน มี IDE แบบลากวาง ๆ ครับ http://qt.nokia.com/downloads แต่ถ้าจะให้ง่าย การพัฒนาบน Linux จะสะดวกสบายมากกว่าครับ ยังไงลองเมล์มาถามได้ครับ