Предполагается, что у Вас уже все скачано, установлено и работает. Для начала... Для начала сделаем приложение, которое просто открывает окно. Без кнопок, без ничего. Код такой:
//---step2.c #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); }
Компилируется все это безобразной строкой вида:
gcc -Wall -g step2.c -o step2 `gtk-config --cflags --libs`
Почему, я поясню позже. Так вот, откомпилировали, на выходе получили файл step2, и запускаем его. Должно изобразиться что-нибудь вроде этого:
Теперь немного поясню. Ну для начала, как обычно, включаем заголовочный файл. Надо сказать, в обычной директории /usr/include вы его не найдете, то есть найдете, но у кого-то он в gtk1.2/gtk/, у кого-то в /usr/local/gtk/. От фантазии компилировавшего зависит. Но, честно говоря, нам это абсолютно все равно. Ведь в команде компиляции то, что заключено в обратных кавычках ` ` предсталяет собой команду, результат выполнения которой подставляется в текст. Очень удобно. В свою очередь, скрипт gtk-config выдает именно то, что нужно - пути include, пути для компоновки библиотек и тому подобное.
Это по поводу компиляции. Теперь насчет собственно программы. Одним из основополагающих понятий GTK является виджет. Каким-то образом в терминологии X Windowing System утвердилось понятие "элементы пользовательского интерфейса" - "gadgets and widgets". Виджет сродни понятию элемента управления в Windows. Так вот. К виджетам относится все, что мы видим на экране - кнопки управления окном, собственно окна, кнопки и прочее.
GtkWidget - не класс, как можно было подумать. Хотя в общем-то Gtk - объектно-ориентированная библиотека, но это запись. Для совместимости с C. Таким образом, в программе любой виджет можно приравнять GtkWidget. Переменная window - окно, которое мы собираемся отобразить. После его объявленияпроизводится начальная инициализация Gtk вызовом gtk_init с параметрами, переданными программе. Затем создается само окно верхнего уровня, отображается на экране, и управление передается функции gtk_main.
Немного о gtk_main. Так же, как и Windows - X Windows, интерактивная среда, управялемая событиями. Поэтому для каждого виджета определяются обработчики событий. Мы их рассмотрим в следующих шагах. Таким образом, это помогает сохранить бесценные ресурсы процессора. Функция gtk_main отслеживает события графической подсистемы, и при необходимости передает управление зарегистрированным окнам. Ну, окна автоматически регистрируются после создания.
Вроде бы пока все.