Контакты

Для связи с нами можно использовать:
irc://irc.chatnet.ru:#gfs
icq://546460
email://cobalt[@]gfs-team.ru

Все материалы предоставлены только с ознакомительной целью
ГлавнаяСтатьиКодингGTK. Введение.
© Cobalt 23.03.2007

В этой статье я хочу познакомить вас с такой удобной библиотекой как GTK.

GTK - (GIMP Toolkit) библиотека для создания графического интерфейса под XWindow (графическая система nix подобных систем). Естественно чтобы писать программы с применением GTK, необходимо иметь в своем распоряжении linux (freebsd, etc.), gcc и саму gtk.

Как вы наварно догадались описываемые в этой статье примеры будут работать под "правильную ос" linux. Вообщето, библиотека GTK кроссплатформенна, и на ней можно с темже успехом создавать программы и под windows, но эту часть я не буду затрагивать в статье. Так что если у вас не установлен еще на ПК linux, то не теряйте времени =).

И так, для начала разберемся как мы будем компилировать наше будущее приложение. Для успешной сборки, надо, находясь в каталоге с исходником, выполнить слудущую команду:

gcc -o hello hello.c `gtk-config --cflags --libs`

Где hello.c - исходник, а hello - результирующая программа.

Давайте же напишем наш первый пример:

<font size="2">
#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(0);
} 
</font>

По сути, эта программа почти ничего не делает. Она просто создает окно. Но давайте поподробнее разберем этот пример:

GtkWidget *window; - определяет "виджет" окна. Виджетами в gtk называются все графические объекты и контенеры так что вам придется запомнить это слово.

gtk_init(int *argc,char ***argv) инициализирует инструментарий и принимает параметры командной строки.Эта функция должна быть использована после определения компонент.

GtkWidget *gtk_window_new(GtkWindowType windowtype) создает новое окно. В качестве параметров эта функция может принемать следущие значения. Они определяют тип создаваемого окна:

* GTK_WINDOW_TOPLEVEL
* GTK_WINDOW_DIALOG
* GTK_WINDOW_POPUP

gtk_widget_show(GtkWidget *widget) используется для того ,чтобы заставить виджет появиться в окне. Функия должна использоваться после определения виджета и изменения его аттрибутов.

И наконец gtk_main(void). Эту функцию необходимо ВСЕГДА вызывать в конце программы.

Вам наверно не безинтересны будут еще некоторые функции с которыми я вам рекомендую поиграться самому. Эти функции задают еще некоторые свойства нашего окна:

gtk_window_set_title(GtkWindow *window,const gchar *title) - как не сложно догадаться задает заголовок окна. Не стоит боятся что второй параметр определен как gchar. Это тот же char но описаный в glib и имеющий некоторые дополнительные полезные свойства. Скорее стоет повнимательнее отнестись к первому параметру. По идее ему передается виджет окна. Но он имеет тип GtkWidget, а принемаемое значение - GtkWindow... По этому эту функцию надо использовать совместно с другой - GTK_WINDOW(GtkWidget *widget). Например так: gtk_window_set_title(GTK_WINDOW(window),"My first Program");

gtk_window_set_default_size(GtkWindow *window, gint width, gint height) - задает размер окна. Тип gint аналогичен типу int.

gtk_window_set_position(GtkWindow *window, GtkWindowPosition position) - устанавливает стартовую позицию окна (т.е. где наше окошко появится при запуске программы). Параметр position может определяться следущими константами:

* GTK_WIN_POS_NONE
* GTK_WIN_POS_CENTER
* GTK_WIN_POS_MOUSE
* GTK_WIN_POS_CENTER_ALWAYS

Ну думаю, на сегодня с тебя достаточно =). В следущий раз мы добавим в наше окно некоторые элементы и научимся обрабатывать от них сигналы.




© Cobalt 23.03.2007

e-Commerce Partners Network
Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
20.09.2017 08:47:03 Avito777jeax написал:
<b>Пополение баланса Авито (Avito) за 50%</b> | <b>Телеграмм @a1garant</b> <b>Здравствуйте,...
Предупреждение
20.09.2017 08:20:25 Avito777jeax написал:
<b>Пополение баланса Авито (Avito) за 50%</b> | <b>Телеграмм @a1garant</b> <b>Мое...
Новая статья
20.09.2017 08:15:19 Avito777jeax написал:
<b>Пополение баланса Авито (Avito) за 50%</b> | <b>Телеграмм @a1garant</b> <b>Приветствую...
Новый релиз
Реклама

Тут должна была быть ваша реклама, но мы потеряли глиняную табличку с ее текстом. SapeId: 665044

Rambler's Top100