Шаг 5 - Улучшенный hello world

Вообще-то, первый проект hello world не полностью функционален. Закрыть его можно было только "убивством" из шела, ну и вообще. Значит, меняем.

#include <gtk/gtk.h>

void hello( GtkWidget *widget,
	gpointer data)
{
	g_print ("Здравствуй, мир!\n");
		// наглость написания по русски приветствия
		// можно себе позволить только с нормально русифицированной консолью
}

gint delete_event( GtkWidget *widget,
	GdkEvent *event,
	gpointer data )
{
	g_print ("delete event!!!!!!\n");
	return (TRUE); 
}

void destroy( GtkWidget *widget,
	gpointer data )
{
	gtk_main_quit ();
		// это для того, чтобы программу можно было закрыть с кнопки на окне
		//
}

int main( int argc,
	char *argv[] )
{
	GtkWidget *window;
	GtkWidget *button;

	gtk_init (&argc, &argv);

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

	gtk_signal_connect (GTK_OBJECT (window), "delete_event",
		GTK_SIGNAL_FUNC (delete_event), NULL);
	gtk_signal_connect (GTK_OBJECT (window), "destroy",
		GTK_SIGNAL_FUNC (destroy), NULL);

	gtk_container_set_border_width (GTK_CONTAINER (window), 10);

	button = gtk_button_new_with_label ("Здорово, Мир!");

	gtk_signal_connect (GTK_OBJECT (button), "clicked",
		GTK_SIGNAL_FUNC (hello), NULL);
	gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
		GTK_SIGNAL_FUNC (gtk_widget_destroy),
		GTK_OBJECT (window));

	gtk_container_add (GTK_CONTAINER (window), button);

	gtk_widget_show (button);
	gtk_widget_show (window);
	gtk_main();
	return 0;
}

Некоторые замечания. Как, наверно, читатель заметил, здесь довольно часто использовались русско-кодированные слова. Ну, с консолью у меня (xterm) давно все в порядке, а вот надпись на кнопке отобразилась поначалу кривовато. Ну, чтоб все было нормально, необходимо шрифт на заказ в Gnome Control Center поставить. Например, отлично смотрится Helvetica-Cronyx.

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


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел - 23.07.2002