컴퓨터 관련

GTK [1] 창 띄우기.

_BlankSpace 2017. 4. 9. 23:09

한참 GTK를 공부하면서.. 구글이나 GTK 관련 사이트에서 공부하면서 개인적으로 정리한 내용들을 포스팅하려고 합니다.


최근에는 QT? 나 기타 기술을 이용하여 리눅스 GUI를 설정하는데 GTK도 공부하면 좋지 않을까 생각이 드네요.


이러한 생각을 하시는 분들께 조금이나마(?) 도움이 되었으면 좋겠습니다.


1. 창 띄우기


1
2
3
4
5
6
7
8
9
10
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GtkWidget* window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main ();
return ;
}
cs


위 프로그램은 gcc를 사용하여 컴파일할 수 있다.


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

cs


- 코드 설명


gtk_init (&argc, &argv);

디폴트로 비주얼과 칼라맵 등 몇 가지를 셋팅한 후, 다음 인자로 넘어간다. 이 함수는 사용할 라이브러리

를 초기화 하고, 디폴트로 signal handler를 셋업하며, 명령행을 통해 프로그램에 전해진 인자들 중 아래

의 것들을 찾아 체크한다.

– gtk-module

– g-fatal-warnings

– gtk-debug

– gtk-no-debug

– gdk-debug

– gdk-no-debug

– display

– sync

– name

– class


window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_widget_show (window);

- 위의 두 줄은 window를 만들고 보여준다.

- GTK_WINDOW_TOPLEVEL이란 인자는 window 매니저의 장식과 위치설정에 따르게 한다.

- 0x0 크기의 window를 만들지 않고, child가 없는 window는 디폴트 값인 200×200 크기로 만들어진다.

- 순서 없는 목록 gtk_widget_show() 함수는 이 widget의 속성에 대한 세팅이 끝났음을 GTK에 알려주는 것이고, 이후 그 widget은 보여진다.


gtk_main ();

순서 없는 목록gtk_main()은 GTK 어플 전반적으로 볼 수 있는 또 하나의 함수호출이다. 프로그램이 해당 라인에 이르면, GTK는 이벤트, 타임아웃, 또는 파일 입출력 감지 등을 기다리며 대기한다.