Шаг 2 - Попробуем что-нибудь запустить

Предполагается, что у Вас уже все скачано, установлено и работает. Для начала... Для начала сделаем приложение, которое просто открывает окно. Без кнопок, без ничего. Код такой:

//---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, и запускаем его. Должно изобразиться что-нибудь вроде этого:

gif/2_1.gif (2191 b)

Теперь немного поясню. Ну для начала, как обычно, включаем заголовочный файл. Надо сказать, в обычной директории /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 отслеживает события графической подсистемы, и при необходимости передает управление зарегистрированным окнам. Ну, окна автоматически регистрируются после создания.

Вроде бы пока все.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел - 20.06.2002