Published on Sake.in.th (https://sake.in.th)

หน้าแรก > หน้าหลัก > มือใหม่หัดใช้ GTK +

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

เขียนโดย sake เมื่อ 2008-08-14 16:25

อันเก่า ที่เคยเขียนไว้ที่ 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/

Tags: 
linux
programming
GTK

ความเห็น

หาจุดขาย

Permalink เขียนโดย ต้นแพร (ยังไม่ยืนยันความถูกต้อง) เมื่อ 2008-08-21 01:24

สวัสดีครับ

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

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

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

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

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

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

ขอบคุณครับ

รูปภาพของ sake [1]

ขอตอบละกันครับ [2]

Permalink [2] เขียนโดย sake [1] เมื่อ 2008-10-09 21:24

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

GTK+ Editor [3]

Permalink [3] เขียนโดย ผู้ไม่ประสงค์ออกนาม (ยังไม่ยืนยันความถูกต้อง) [4] เมื่อ 2010-03-13 20:06

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

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

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

รูปภาพของ sake [1]

ถ้าเป็นแบบ IDE ลากวาง ๆ [5]

Permalink [5] เขียนโดย sake [1] เมื่อ 2010-03-13 20:38

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


Source URL (modified on 2008-08-14 16:25): https://sake.in.th/node/63?page=0

Links
[1] https://sake.in.th/users/sake
[2] https://sake.in.th/comment/139#comment-139
[3] https://sake.in.th/comment/159#comment-159
[4] http://wakaru-mac.blogspot.com/
[5] https://sake.in.th/comment/160#comment-160
[6] http://sourceforge.net/projects/gladewin32/
[7] http://qt.nokia.com/downloads